考虑以下代码:
#include<stdio.h>
struct s{
int i;
} C;
int main(){
C.i=8;
printf("%u %u",C,C.i);
}
Run Code Online (Sandbox Code Playgroud)
输出:
8 8
Run Code Online (Sandbox Code Playgroud)
为什么打印C给出第一个元素的值?
你不应该以任何方式依赖它,因为它是未定义的行为.在传递a时,%u格式说明符需要一个类型的表达式.对于类型使用或.unsigned intstruct Cint%d%i
结果8就像结构一样,通过值传递任何其他对象.它只有一个成员,因此很可能它具有相同的大小,作为int类型的对象.换一种说法:
sizeof(int) == sizeof(struct C)
Run Code Online (Sandbox Code Playgroud)
成立.该printf()函数将struct对象解释为unsigned int,因此您获得相同的数字.