32 votes

Taille C vs C ++

Je viens de tomber sur ce simple extrait de code et je me demande pourquoi la sortie de ce programme lorsqu'il est compilé par un compilateur C est - 4 et quand il est compilé en C++ on est 8.

#include <stdio.h>

int x;

int main(){
    struct x {int a; int b;};
    printf("%d", sizeof(x));
    return 0;
}

Sortie C++ est rationnel (8 = 4 + 4 = sizeof(x.a) + sizeof(x.b)), mais la production de C ne l'est pas. Alors, comment est - sizeof de travail en C?

Semble C préfère les variables globales de plus de locaux. Est-il juste?

78voto

aschepler Points 23731

En C, une définition de structure comme struct x { int a; int b; }; ne définit pas un type x , elle définit un type struct x . Donc, si vous supprimez le int x; global, vous constaterez que la version C ne se compile pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X