unsigned __int64
-
Hallo,
ich versuche gerade C++ zu lernen und hab schon das erste Problem.
unsigned __int64 j = 34359738368ULL; // = 2^35 j = j << 1;So weit, so gut.

Hätte jetzt gedacht, dass j=2^36.
Warum ist das Ergebnis j=0?
Und was muss ich ändern, um das "richtige"
Ergebnis zu erhalten.MfG Simon
-
das dürfte ein compilerfehler sein. welcher compiler war das?
oder es ist ein ausgabefehler. manchmal kann der op<< nur unsigned int.
-
__int64 ist ein MSFT spezifischer 64-Bit Datentyp der longlong unter Linux entspricht. Der Compiler ist daher wahrscheinlich VC++. Das Ergebnis sollte nicht Null sein. Gib das Ergebnis in Hex aus, dann siehst Du's besser. In etwa so:
std::cout << std::showbase; unsigned __int64 j = 34359738368ULL; // = 2^35 j = j << 1; std::cout << j << std::endl; std::cout << std::hex << j << std::endl; j = j << 1; std::cout << std::hex << j << std::endl;