lang lang in C / C ++

Ich versuche diesen code in GNU C++ compiler, und bin nicht in der Lage zu verstehen, sein Verhalten:

#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;
}

Wenn ich kommentieren Sie die auskommentierte Zeile, der code kann nicht kompiliert werden, und gibt eine Fehlermeldung:

Fehler: integer-Konstante zu groß für long-Datentyp

Aber, wenn der code kompiliert wird, wie es ist und ausgeführt wird, erzeugt Werte, die viel größer als 10000000000.

Warum?

InformationsquelleAutor der Frage sud03r | 2009-09-22

Schreibe einen Kommentar