sky*_*oor 42 c++ variables initialization
我的理解是int
变量将0
自动初始化; 但事实并非如此.下面的代码打印一个随机值.
int main ()
{
int a[10];
int i;
cout << i << endl;
for(int i = 0; i < 10; i++)
cout << a[i] << " ";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
And*_*Dog 68
如果是,它将自动初始化
MyClass instance;
int a[10] = {}
(全部归零)或int a[10] = {1,2};
(除了前两项之外全部归零:a[0] == 1
和a[1] == 2
)static
(无论是在函数内还是在全局/命名空间范围内) - 谢谢Jerry永远不要相信自动初始化的普通类型(int,long,...)的变量!它可能发生在像C#这样的语言中,但不会发生在C&C++中.
Viv*_*ath 11
int
不会初始化为零.当你说int i;
,你所做的只是为整数保留空间.该位置的值未初始化.这只是你说的int i = 0;
(或者int i = 5;
在这种情况下,值被初始化为5).无论如何,将变量初始化为某个已知值是一种很好的做法.否则,i
保留为该存储空间保留的任何随机值.这就是cout
打印出随机值的原因.
默认值取决于语言的实现.有些语言会将其初始化为某种"理智"值(或许可能为0).作为一个经验法则,我总是初始化为一些明智的值的变量(除非我知道我将它初始化到别的东西肯定之前,我使用它).正如我之前提到的那样,假设价值是理智的,这是不明智的.它可能是也可能不是(取决于语言,或该语言的解释器/编译器的实现).
请参见4.9.5 C++编程语言的初始化.
根据您的变量是否为本地,静态,用户定义或const默认初始化可能发生.
因为您正在使用POD(普通旧数据类型),所以自动变量不会初始化为任何默认值.
归档时间: |
|
查看次数: |
62585 次 |
最近记录: |