gpt4 book ai didi

c - 为什么从循环中重新声明 C 变量不会影响循环?

转载 作者:行者123 更新时间:2023-11-30 18:28:03 25 4
gpt4 key购买 nike

来自此question ,为什么这个循环仍然运行了5次?

for(int i = 0; i < 5; i++)
{
int i = 10;
printf("%d\n", i);
}

当我们重新声明 i 时,我会猜测这一点,当 ifor 中进行评估-loop,它将在第一个循环后停止循环。这就像我们刚刚重新分配 i = 10; 一样。 。然而,就好像创建了一个新变量,但循环仍然使用前一个变量。这是如何以及为什么会发生?

最佳答案

这是由于范围所致。每次使用大括号 {} 时,都会为程序生成一个新的作用域。一旦退出作用域,该作用域中初始化的任何内容都将被删除,这对您来说是每个循环(当它存在时检查循环条件)。

使用我刚才所说的内容,我们看到您通过说 int i = 10; 重新初始化了 i,这意味着您在该变量中创建了一个名为 i 的新变量,其值为 10范围。您只需编写 i = 10; 即可获得所需的结果,因为它将首先在变量的范围内查找,然后它将在上面的下一个范围中循环,在 for 循环中找到它。

编辑:

对此进行进一步评论,这意味着多个变量可以具有相同的名称,只要它们位于彼此不同的范围内即可。就像这样:

#include <stdio.h>
int main()
{
int x = 10;
printf("x = %d\n",x); //check x value equals 10

for(int i = 0; i < 10; i ++)
{
int x = i;
printf("x = %d\n",x); //a new variable, also called x, now outputs x = i;
}

printf("x = %d\n",x); //check x value returns to the original when scope is left
return 0;
}

关于c - 为什么从循环中重新声明 C 变量不会影响循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50152883/

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