C结构的尺寸
我得到的输出是2:1 你能告诉我这个程序是如何工作的吗?这里的:运算符(a:1)有什么用C结构的尺寸,c,C,我得到的输出是2:1 你能告诉我这个程序是如何工作的吗?这里的:运算符(a:1)有什么用 谢谢此处使用的:运算符指定了此处包含的字段的位大小sizeof()返回字节边界长度,因此第一个为13位(2字节),第二个为1字节。此处使用的:运算符指定此处包含字段的位大小sizeof()返回字节边界长度,因此第一个为13位(2字节),第二个为1字节。该:定义了一个 在您的示例中,struct st1类型的对象以编译器选择的某种排列方式使用13位 编译代码时选择的特定排列产生了一个占用2字节的对象。13位不
谢谢此处使用的
:
运算符指定了此处包含的字段的位大小sizeof()
返回字节边界长度,因此第一个为13位(2字节),第二个为1字节。此处使用的:
运算符指定此处包含字段的位大小sizeof()
返回字节边界长度,因此第一个为13位(2字节),第二个为1字节。该:
定义了一个
在您的示例中,struct st1
类型的对象以编译器选择的某种排列方式使用13位
编译代码时选择的特定排列产生了一个占用2字节的对象。13位不一定是这些字节中的第一个(或最后一个)
另一个结构类型(
struct st2
)占用1字节中的3位。该:
定义了一个
在您的示例中,struct st1
类型的对象以编译器选择的某种排列方式使用13位
编译代码时选择的特定排列产生了一个占用2字节的对象。13位不一定是这些字节中的第一个(或最后一个)
另一种结构类型(
struct st2
)占用(1字节中的3位)。这里至少有两件事值得注意:
这里至少有两件事值得注意:
您的
printf
语句不正确,一个好的编译器可能会给您一个警告。。。size\u t
的格式说明符是%zu
,z
是size\u t
的大小,而u
是无符号值。您的printf
语句不正确,一个好的编译器可能会给您一个警告。。。size\u t
的格式说明符是%zu
,z
是size\u t
的大小,而u
是无符号值。
struct st1{
int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
char a:3;
}s2;
int main(){
printf("%d : %d",sizeof(s1),sizeof(s2));
getchar();
}