Raj*_*mar 3 c initialization garbage
可能重复:
是否已明确指定未初始化的数据行为?
我尝试了以下代码
#include<stdio.h>
void main()
{
int i; \
printf('%d',i);
}
Run Code Online (Sandbox Code Playgroud)
结果给出了VC++中的垃圾值,而tc中的垃圾值为零.什么是正确的价值?默认情况下,未初始化的变量的值是否为零?或者它会包含垃圾值?
接下来是一样的
#include<stdio.h>
void main()
{
int i,j,num;
j=(num>0?0:num*num);
printf("\n%d",j);
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是什么?
从技术上讲,未初始化的非静态局部变量的值是Indeterminate [Ref 1].
简而言之,它可以是任何东西.访问这样一个未初始化的变量会导致未定义的行为.[参考2]
[参考1]
C99部分6.7.8初始化:
如果未显式初始化具有自动存储持续时间的对象,则其值不确定.
[参考2]
C99第3.18节未定义的行为:
在使用不可移植或错误的程序构造时,对于本国际标准没有要求的错误数据或不确定值的对象的行为.
注意:强调我的.
| 归档时间: |
|
| 查看次数: |
12501 次 |
| 最近记录: |