Warum ist die sizeof(int) == sizeof(long)?

Im Programm aufgeführt sind unten, sizeof(int) und sizeof(long) sind gleich auf meinem Rechner (beide gleich 4 bytes (oder 32 bits)). Eine lange, soweit ich weiß, ist 8 bytes. Ist das richtig? Ich habe ein 64-bit-Maschine

#include <stdio.h>
#include <limits.h>

int main(void){
    printf("sizeof(short) = %d\n", (int)sizeof(short));
    printf("sizeof(int) = %d\n", (int)sizeof(int));
    printf("sizeof(long) = %d\n", (int)sizeof(long));
    printf("sizeof(float) = %d\n", (int)sizeof(float));
    printf("sizeof(double) = %d\n", (int)sizeof(double));
    printf("sizeof(long double) = %d\n", (int)sizeof(long double));
    return 0;
}
  • Siehe this
  • Ich denke, die Ausgabe von code, der Ihre Frage beantwortet.
  • Nun, ein code-Beispiel spricht nicht gegen die Norm, da Compiler kann nicht konform sein, kann die Umsetzung bestimmtes Verhalten oder möglicherweise Erweiterungen. So ein Beispiel im code nicht beweisen, was es sein sollte.
  • seine Frage nicht erwähnt nichts über die Norm. Seine Frage war " Eine lange, soweit ich weiß, ist 8 bytes. Ist das richtig?' Die Antwort, offensichtlich aus seinem code, ist "Nein, die lange auf Ihrem Computer, mit Ihrem compiler, ist 4 bytes".
InformationsquelleAutor ChrisMcJava | 2013-09-19
Schreibe einen Kommentar