ich diesen Code auf GNU C++ Compiler versuchen und nicht in der Lage ist, sein Verhalten zu verstehen:lange lange in C/C++
#include <stdio.h>;
int main()
{
int num1 = 1000000000;
long num2 = 1000000000;
long long num3;
//num3 = 100000000000;
long long num4 = ~0;
printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3));
printf("%d %ld %lld %llu", num1, num2, num3, num4);
return 0;
}
Als ich die Kommentarzeile Kommentar-, wird der Code nicht kompiliert und ein schenkt Fehler:
error: integer constant is too large for long type
Aber, wenn der Code kompiliert wird, wie es ist und ausgeführt wird, es erzeugt Werte viel größer als 10000000000.
Warum?
Vielleicht zu spät, aber für zukünftige Leser schlage ich vor, dass Sie '' verwenden und 'uint64_t' verwenden. Um einen 64-Bit-Wert anzuzeigen, 'printf ("% "PRIu64" \ n ", val);' –
enthusiasticgeek