加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

未初始化变量的价值是多少?

发布时间:2020-12-16 10:31:46 所属栏目:百科 来源:网络整理
导读:参见英文答案 (Why) is using an uninitialized variable undefined behavior?????????????????????????????????????7个 Possible Duplicate: 07001 我尝试了以下代码 #includestdio.hvoid main(){int i; printf('%d',i);} 结果给出了VC中的垃圾值,而tc中的
参见英文答案 > (Why) is using an uninitialized variable undefined behavior?????????????????????????????????????7个

Possible Duplicate:
07001

我尝试了以下代码

#include<stdio.h>
void main()
{
int i; 
printf('%d',i);
}

结果给出了VC中的垃圾值,而tc中的垃圾值为零.
什么是正确的价值?
默认情况下,未初始化的变量的值是否为零?或者它会包含垃圾值?

接下来是一样的

#include<stdio.h> 
void main()
{
int i,j,num;
j=(num>0?0:num*num);
printf("n%d",j);
}

上面代码的输出是什么?

解决方法

从技术上讲,未初始化的非静态局部变量的值是Indeterminate [Ref 1].
简而言之,它可以是任何东西.访问这样一个未初始化的变量会导致未定义的行为.[参考2]

[参考1]
C99第6.7.8节初始化:

If an object that has automatic storage duration is not initialized explicitly,its value is indeterminate.

[参考2]

C99第3.18节未定义的行为:

behavior,upon use of a nonportable or erroneous program construct,of erroneous data,or of indeterminately valued objects,for which this International Standard imposes no requirements.

注意:强调我的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读