C/C++ - 数组初始化列表为空的区别
今天偶然碰到C++中数组的初始化列表可以为空,对于内置类型int,char,double以及string类型等会默认初始化,菜鸟的我颇为惊讶。而把后缀名换成.c,在C编译器(VS2010)中编译报错。这应该是C和C++关于数组初始化的一点不同之处吧,记下来吧。
测试代码,如下
#include <stdio.h>
void main(void)
{
// ok: empty initialized list in C++ compiler
// error: syntax error : '}' in C compiler
char arr[1] = { };
printf("%d\n", arr[0]);
}