在C语言中,是
int x, y, z = 0;
和这个一样吗?
int x = 0;
int y = 0;
int z = 0;
此外,如果我只说 int a;
,似乎 a
的值是零,即使它未初始化,但不是未定义,如 What will be the value of uninitialized variable?
最佳答案
不,两者不等同。
int x, y, z = 0;
在这一行中,x
和 y
将具有不确定的值,而 z
被初始化为零。
然而,您可以将其保留在“一行”中,但要付出一些冗长的代价:
int x = 0, y = x, z = y;
现在所有三个都被初始化为相同的值(您给 x
的值)。要用一个变量初始化另一个变量,只需预先定义初始化器即可。即使在同一条线上也能正常工作。上面的内容还可以让您很容易地更改所有变量的初始值。
或者,如果你觉得以前的样式很难看,你可以让它在两行中工作:
int x, y, z;
x = y = z = 0;
但现在是赋值,而不是初始化。
Also, if I just say
int a;
, it seems that the value ofa
is zero even if it is uninitialized, but not undefined as described in What will be the value of uninitialized variable?
“不确定值”并不意味着“非零”。零并没有使它成为变量初始值的无效候选者。一些“有用的”编译器在调试版本中将变量初始化为零。如果您不注意编译器警告,它可能会隐藏严重的错误。
关于c - 在一行中初始化C中的所有变量和未初始化的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918648/