运行 print_test() 函数时,下面的代码打印什么?
struct test {
int a, b, c;
};
void print_test(void) {
struct test t = {1};
printf("%d/%d/%d", t.a, t.b, t.c);
}
解决方案1\0\0
为什么 b 和 c 初始化为零,尽管我没有这样做?该结构有默认值吗? 但是,结构不是全局的,成员也不是静态的。为什么它们会自动零初始化?如果数据类型不是 int 另一种数据类型,哪个值将被初始化?
最佳答案
如果您没有为结构体的所有成员指定足够的初始值设定项,您将面临 Zero initialization ,这会将剩余成员初始化为 0
。我认为按照今天的标准,这似乎有点奇怪,特别是因为 C++ 的初始化语法多年来已经发展和成熟了很多。但这种行为仍然是为了向后兼容。
关于c - struct c 中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63684368/