gpt4 book ai didi

c - int会在for循环中声明一个新变量吗?

转载 作者:行者123 更新时间:2023-12-05 03:19:00 25 4
gpt4 key购买 nike

在每个循环中,它会是一个全新的a还是原始的a

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

执行结果:

a=0
a=1
a=2
a=3
a=4

最佳答案

是的,在循环的每次迭代中,都会有一个new a,它的存​​在只持续到循环的右大括号。下一次迭代 another a 将被创建。

在您提供的代码片段中,这些新创建的 a 由于某种原因将被分配到相同的地址。但是,这不是保证的行为,您不能假设它。

#include <stdio.h>

int main(void) {
for (int i = 0; i < 5; i++) {
int a = i;
printf("a=%d %p\n", a, &a);
}

return 0;
}

在我的电脑上,所有安装的编译器都表现出相似的行为:这些新创建的 a 将被分配到相同的地址

a=0 0000008F898FFB44
a=1 0000008F898FFB44
a=2 0000008F898FFB44
a=3 0000008F898FFB44
a=4 0000008F898FFB44

同样,这不是保证的行为,您不能假设它。

关于c - int会在for循环中声明一个新变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73550747/

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