gpt4 book ai didi

c - 理解 C 中的 For 循环

转载 作者:太空狗 更新时间:2023-10-29 15:47:58 26 4
gpt4 key购买 nike

在 C 语言中,我很容易理解以下一段简单的 for 循环代码。

int j=20;
for(int i=0, j; i<=j ; i++, j--)
printf("i = %d and j = %d \n",i,j);

打印输出为

i=0 and j=2
i=1 and j=1

为什么它不以 j=20 开头,而是打印 j=2 并在 j=1 之后停止。

但是当我使用这段代码时

int j=20;
for(int i=0, j=20; i<=j ; i++, j--)
printf("i = %d and j = %d \n",i,j);

它正确地开始于

i=0 and j=20 upto ... i=9 and j= 11

有什么我想念的吗?

最佳答案

你是。在 for 构造内部声明 j 会创建一个新的(作用域内的)j,它的值不同于外部。如果你未能初始化它,你会得到分配时内存中发生的任何垃圾。

像这样的变量称为“自动”变量,分配在程序的堆栈上。当你需要一个时,分配更多的堆栈空间。当它们超出范围时(实际上是在函数返回时),通过将它们全部弹出来清理它们。

当需要下一位自动存储时,同样的事情会发生,然后您会得到堆栈中恰好遗留下来的任何位模式作为您的新变量值。

关于c - 理解 C 中的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12327652/

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