gpt4 book ai didi

c - 正在初始化未初始化的值?

转载 作者:行者123 更新时间:2023-12-05 01:28:41 26 4
gpt4 key购买 nike

在 C 中,自动变量如果未初始化,则保存一个垃圾值。但是,请考虑以下程序:

int main(){
signed char term;
(char)term--;
printf("%d\n",term);
}

它打印出值“7”。如果我不执行 (char)term--,它会打印值“8”。所以,它绝对没有垃圾值(value)。这不是自相矛盾吗?

最佳答案

那是垃圾。你得到 8 作为垃圾,减去得到 7。

这就是未定义的行为。仅仅因为你不断得到 8 并不意味着它是明确定义的。尝试在代码中做更复杂的事情。在 char 的上方和下方添加变量。


关于你的“测试”,你说:

However, the consistency is hard to overlook, considering that garbage should be random.

您需要检查您的假设。 “垃圾应该是随机的”是谁说的?垃圾应该根据什么来随机?垃圾随机的唯一方法是系统定期检查内存并为其分配随机数。

当我们说“随机”时,是指我们不知道它会是什么。这并不意味着它是不确定的。这些是电脑。如果你告诉他们一遍又一遍地做同样的事情,它就会一遍又一遍做同样的事情。

您的编译器和设置不断生成相同的代码,最终给您这些垃圾值。确定性,但您不能依赖这种行为:“随机”。

此外,1-800 并不意味着您要像以前那样接受它。 “8”不一定表示垃圾,因为在设置事物的方式中,您的编译器会用 8 填充它们。他的意思是 8 与任何其他数字一样都是垃圾。

关于c - 正在初始化未初始化的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com