gpt4 book ai didi

c - 为什么C中局部变量的默认值是相同的?

转载 作者:行者123 更新时间:2023-11-30 20:43:53 24 4
gpt4 key购买 nike

#include <stdio.h>  
int main()
{
int i,j=3;
i=4+2*j/i-1;
printf("%d",i);
return 0;
}

虽然i没有初始化,但每次都会打印9,所以,它必须打印任何垃圾值。请解释一下...

最佳答案

C 中未初始化的局部变量的值是不确定的,读取它可能会调用未定义的行为。

现在,在特定环境中重复执行使用特定编译器编译的特定程序(正如您所做的那样)可能会产生相同的(当然,仍然未定义)行为。这可能是因为操作系统通常会在每次运行进程时为您的进程提供相同范围的逻辑内存,因此您的程序读取的垃圾很有可能每次都是相同的(但它仍然是垃圾)。或者可能是因为编译器甚至懒得为您提供将要读取的垃圾的二进制表示形式,而是为您提供其他内容(只要它不违反标准)。

关于c - 为什么C中局部变量的默认值是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392364/

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