Я получаю необычное поведение с моим кодом, который является следующимПоведения SizeOf оператора в 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;
}
Для этого куска кода я получаю выход:
4 1 8
На моем знания структура содержит целочисленную переменную размера 4 и переменную char размером 1, поэтому размер структуры a должен быть 5. Но как получится размер структуры 8. Я использую визуальный компилятор C++. Зачем это поведение?
В аргументах 'printf()' вы действительно должны вводить значения 'sizeof' в' (int) '... или' (unsigned long) 'и использовать' '% lu" '... или, если вы C99, используйте ''% zu''. – pmg
@pmg: Точно. Поскольку 'sizeof()' возвращает значение типа 'size_t'. –