Int64_t will nicht.
-
Hallo!
#include <stdint.h> int main(){ int var1 = 2000000000, var2 = 2; int64_t erg = var1*var2; printf("%lld",erg); }
Das Ergebnis ist negativ. Wieso?
Benutze gcc.
-
Hat sich erledigt. Das Ergebnis einer 32-Bit-Int Multiplikation ist ein 32-Bit-Wert.
Ein (int64_t) - Cast hat also gefehlt.
-
Certainly "%I64d" works well.
-
maybe schrieb:
Certainly "%I64d" works well.
Das ist doch eigentlich nur eine Krücke um unter Windows/MinGW 64Bit ints auszugeben, anstelle des (vom Standard vorgesehenem) %lld im Originalpost.
-
Zwei 32bit Werte werden im 32bit Wertebereich multipliziert.
(Mit der Annahme dass int bei Dir 32 bit sind)
Probiere:
int64_t erg = (int64_t)var1 * (int64_t)var2;oder definiere gleich alle Variablen 64 bit gross.
-
Die Antwort hat er sich doch selber vor über zwei Jahren gegeben.