未初始化的本地字符的行为吗?(Behavior of uninitialized local cha

2019-09-24 07:12发布

如果你已经可以说本地int这是未初始化的,那么它得到一个未定义的值,但如果你有一个本地char变量应该是没有一个明确的值呢? 当然,0可能是不确定的状态,但我想知道如果char是任何不同,因为所有相关的信息我找到约为int当焦炭变量转换为int下面的程序只是输出0。 即时通讯使用GCC 4.7,没有标志。

int main()
{
char test1;
int test2;

std::cout<<test2; //garbage
std::cout<<std::endl;
std::cout<<(int)test1; //0
    return 0;
}

Answer 1:

未初始化意味着真的未初始化。 仅仅因为你始终在特定的时间让你的机器上的一个特定的值,并不意味着将永远是所有情况下对所有机器的时间。

您可以确认没有被倾倒的汇编代码为你的功能,并检查它初始化您的变量。



Answer 2:

局部变量无论从任何随机的数据中,他们在那一刻占据堆栈空间得到他们的初始值。 有没有保证空间包含零。



Answer 3:

如果你已经可以说当地的int值未初始化,那么它得到一个未定义的值

不,那是不去想它的正确方法。 局部变量没有得到一个明确的值,它无论如何得没有价值。 接着查询例如未初始化的变量调用未定义的行为

你的程序不一定会打印出“0”。 它不一定会打印任何号码 ,甚至任何东西 。 诚然,在典型的电脑,使用典型的编译器,你的程序将打印出一些号码,但C ++语言的范围之内,我们不能做什么你的程序将做还是不做任何预测。



文章来源: Behavior of uninitialized local char?