本文介绍了未初始化变量的值是多少?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
是否明确指定了未初始化的数据行为?

我尝试了以下代码

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

结果在 VC++ 中给出了垃圾值,而在 tc 中同样为零.正确的值是多少?默认情况下,未初始化的变量的值是否为零?还是会包含垃圾值?

The result gave garbage value in VC++, while same in tc was zero.What will be the correct value?Will an uninitialized variable by default have value of zero? or it will contain garbage value?

接下来是一样的

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

上面代码的输出是什么?

What will be the output of the code above?

推荐答案

从技术上讲,未初始化的非静态局部变量的值是Indeterminate.
简而言之,它可以是任何东西.访问此类未初始化的变量会导致未定义行为.

Technically, the value of an uninitialized non static local variable is Indeterminate.
In short it can be anything. Accessing such a uninitialized variable leads to an Undefined Behavior.


C99 第 6.7.8 节初始化:

如果具有自动存储持续时间的对象未显式初始化,则其值是不确定的.

C99 第 3.18 节未定义的行为:

在使用不可移植或错误程序结构、错误数据或不确定值对象时的行为,本国际标准对此没有任何要求.p>

注意:强调我的.

这篇关于未初始化变量的值是多少?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 18:16