gpt4 book ai didi

c - 为什么这个程序在变量未初始化时产生奇怪的输出?

转载 作者:太空狗 更新时间:2023-10-29 16:27:18 26 4
gpt4 key购买 nike

int main() {
int j = 0;
int i = 0;
for (j = 0; j < 5; j++) {
printf("Iteration %d : %d ", j + 1, i);
int i;
printf("%d", i);
i = 5;
printf("\n");
}
}

以上代码生成以下输出:

Iteration 1 :  0 0
Iteration 2 : 0 5
Iteration 3 : 0 5
Iteration 4 : 0 5
Iteration 5 : 0 5

我无法理解为什么迭代 2、3、4、5 中的第二个 printf 值是 5.

我对为什么每次迭代的第一个值都是0的理解是for循环中的i的作用域是本地的,一去就销毁进入新的迭代,因为 ifor 循环中声明。

但我无法弄清楚为什么这个值在第二个 printf 时变为 5。

最佳答案

您的程序的行为未定义

内部作用域 i 在读取时未初始化

(可能发生的是,在后续迭代中重新引入的 i 占用与内部 i 的先前化身相同的内存,并且第一次迭代中未初始化的内存对应于 0。但是不要依赖它。在其他情况下,编译器可能会吃掉你的猫。)

关于c - 为什么这个程序在变量未初始化时产生奇怪的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42419838/

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