Tôi nhận được hành vi bất thường với mã của tôi, đó là như sauHành vi của nhà điều hành sizeof trong 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;
}
Đối với đoạn mã này tôi nhận được kết quả:
4 1 8
Tính đến tôi kiến thức cấu trúc có chứa một biến số nguyên của kích thước 4 và một biến char kích thước 1 do đó kích thước của cấu trúc nên là 5. Nhưng làm thế nào đến kích thước của cấu trúc là 8. Tôi đang sử dụng trình biên dịch C++ trực quan. Tại sao hành vi này?
Trong các đối số 'printf()', bạn thực sự nên bỏ các giá trị 'sizeof' thành' (int) '... hoặc' (unsigned long) 'và sử dụng' "% lu" '... hoặc, nếu bạn có C99, sử dụng '"% zu "'. – pmg
@pmg: Chính xác. Bởi vì 'sizeof()' trả về một giá trị kiểu 'size_t'. –