una - C vs C++ sizeof
sizeof c++ (1)
Esta pregunta ya tiene una respuesta aquí:
Acabo de encontrar este simple fragmento de código y me pregunto por qué el resultado de este programa cuando es compilado por un compilador de C es 4
y cuando es compilado por un C ++ uno es 8
.
#include <stdio.h>
int x;
int main(){
struct x {int a; int b;};
printf("%d", sizeof(x));
return 0;
}
La salida de C ++ es racional ( 8 = 4 + 4 = sizeof(xa) + sizeof(xb)
), pero la salida de C no lo es. Entonces, ¿cómo funciona sizeof
en C?
Parece que C prefiere las variables globales por encima de las locales. ¿Es correcto?
En C, una definición de struct x { int a; int b; };
como struct x { int a; int b; };
struct x { int a; int b; };
no define un tipo x
, define un tipo struct x
. Entonces, si eliminas el int x;
Global, encontrarás que la versión C no compila.