此外,变量1和2的初始化以及变量3和4的初始化之间是否存在差异?问题的背景是,我在Visual Studio 6.0中得到编译器错误,初始化变量2和4。使用Visual Studio 2008,它编译得很好。
struct stTest
{
int a;
char b[10];
};
stTest one = {0};
stTest two = {};
stTest three[10] = {0};
stTest four[10] = {};
答案 0 :(得分:2)
是的,所有这些都需要通过语言标准(C ++ 98)初始化为0。
已知Visual Studio 6不能正确处理{}
案例:如果我没记错的话,它甚至不支持{}
语法。
但是,Visual Studio 6是一个预标准编译器。它是在C ++ 98标准出台之前发布的。
答案 1 :(得分:1)
答案 2 :(得分:0)
初始化是一样的。 Visual Studio 2.0已损坏。
<小时/> 编辑:
是的,它们被初始化为零。
答案 3 :(得分:0)
如果我有一个名为tPoint的结构......
struct tPoint {
int x;
int y;
};
......我用它如下......
tPoint spot {10,20};
......我可以预期成员x和y将被初始化。
至于你的第一个问题,我希望数组b没有被初始化,因为你只给了一个值进行初始化。
默认情况下,您可以将值初始化为零:
struct stTest
{
int a = 0;
char b[10] = {0};
};
您可以像这样初始化数组:
char i[10] = {0};
stTest one = {0, i};
至于为什么它编译VS 2008而不是VS 6.0,VS 2008可能会忽略空集并且不会尝试初始化任何内容。