c - struct c 中的默认值

标签 c

运行 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/

相关文章:

C++ 返回结构数组

c - 如何使浮点计算具有确定性?

c - 如何模拟多媒体按键(C)?

c++ - GCC '-g' 选项有什么作用?

objective-c - objective-c 程序

c - 将指针数组传递给 C 中的函数

C - chmod() 不改变权限

c - 允许在函数定义的返回类型中定义结构有什么关系? (C)

c - 通过添加数组c来实现延迟效果

c - 在 C 中将#define 与开关状态一起使用