非初始化的本地炭的行为

Behavior of uninitialized local char?

本文关键字:初始化      更新时间:2023-10-16

如果您说的是一个非初始化的本地 int,则它会得到一个不确定的值,但是如果您有局部char变量,那是否也不具有未定义值?当然0可能是那个未定义的值,但是我想知道char是否有不同,因为我发现的所有相关信息均与int有关,而下面的程序仅在Char变量施放为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;
}

非初始化的意思是真正的非初始化。仅仅因为您在特定时间始终在上获得特定的价值,并不意味着在所有机器上始终都是这种情况。

您可以通过倾倒函数的汇编代码并进行检查。

如果您说的是一个不可分化的本地int,则它会获得不确定的值

不,这不是考虑它的正确方法。您的本地变量没有获得未定义的值,它没有任何值。随后查询这种非初始化的变量invokes 不确定的行为

您的程序不一定打印" 0"。它不一定要打印任何数字,甚至完全是。在典型的计算机上使用典型的编译器,您的程序将打印一些数字,但是在C 语言的范围内,我们无法对您的程序会做什么或不做任何事情进行任何>

本地变量从当时占据的堆栈空间中的任何随机数据获取其初始值。不能保证空间包含零。