estoy recibiendo un comportamiento inusual con mi código, que es el siguienteComportamiento del operador sizeof en C
#include<stdio.h>
struct a
{
int x;
char y;
};
int main()
{
struct a str;
str.x=2;
str.y='s';
printf("%d %d %d",sizeof(int),sizeof(char),sizeof(str));
getch();
return 0;
}
Por esta pieza de código que estoy recibiendo la salida:
4 1 8
A partir de mi conocimiento la estructura contiene una variable entera de tamaño 4 y una variable char de tamaño 1, por lo tanto, el tamaño de la estructura a debe ser 5. Pero, ¿cómo es que el tamaño de la estructura es 8. Estoy usando un compilador visual de C++. ¿Por qué este comportamiento?
En 'printf()' argumentos que realmente debe convertir los valores 'sizeof' a' (int) '... o' (unsigned long) 'y use' "% lu" '... o, si tiene C99, use '"% zu "'. – pmg
@pmg: Exactamente. Porque 'sizeof()' devuelve un valor de tipo 'size_t'. –