x
eine signierte ganze Zahl ist, die Wert, kann nur bis zu -2,147,483,847
-+2,147,483,847
und auf der Durchführung der Operation
x * x
==> 60674 * 60674 = 3,681,334,276
, die in der Regel den Ganzzahlbereich überläuft. Daher benötigen Sie möglicherweise einen großen Datentyp, um die Berechnung zu speichern. 60674 * 60674
Sie können zwei Dinge versuchen, dies zu tun.
Ändern Sie den Datentyp x
von int
zu long
oder für mehr Reichweite long long
long long x = 60674;
Typ werfen die Berechnung Langstreckendatentyp. printf("%lld \n",((long long)x* (long long)x));
Weil 'x * x' überläuft. –
1. Seien Sie spezifischer, wenn etwas "nicht funktioniert". Erkläre, was du erwartet hast und was du gesehen hast. 2. Sie werfen das Ergebnis, aber das Ergebnis ist ein int. Die Besetzung muss vorher gemacht werden. – Tim
Sie sollten die beste Antwort akzeptieren, nicht nur kommentieren, dass es funktioniert hat. – SurvivalMachine