Pourquoi le sizeof(int) == sizeof(long)?

Dans le programme énumérés ci-dessous, la sizeof(int) et sizeof(long) sont égaux sur ma machine (à la fois l'égalité de 4 octets (32 bits)). Une longue, autant que je sache, est de 8 octets. Est-ce correct? J'ai une machine 64 bits

#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;
}
Voir this
Je pense que la sortie de votre code répond à votre question.
Eh bien, un exemple de code ne parle pas vers la norme depuis les compilateurs peuvent ne pas être conformes, peut avoir la mise en œuvre des comportements spécifiques ou peuvent avoir des extensions. Donc un exemple de code ne prouve pas ce qu'elle devrait être.
sa question ne mentionne rien à propos de la norme. Sa question était " Une longue, autant que je sache, est de 8 octets. Est-ce correct?' La réponse, évidente, à partir de son code, est "Non, un long sur votre ordinateur, avec votre compilateur, est de 4 octets".

OriginalL'auteur ChrisMcJava | 2013-09-19