作为结构初始化器,{}和{0}之间有什么区别?

fut*_*lib 4 c struct initialization

这有什么区别:

struct something s = {};
Run Code Online (Sandbox Code Playgroud)

还有这个?

struct something s = {0};
Run Code Online (Sandbox Code Playgroud)

据我所知,两者都将每个成员初始化为零.

Mic*_*urr 8

struct something s = {};是无效的C (除非他们在C11中添加它),但它是有效的C++.GCC似乎允许它在C程序中作为扩展(虽然我没有在http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html上的文档中看到它,但我可能只是遗漏了它).

在C++中,它将导致"值初始化",这基本上意味着为每个成员调用默认构造函数(非类成员的零初始化).