小编new*_*low的帖子

内部循环中创建的变量在C中的迭代期间改变值

我的产品代码类似于以下内容.据我说,输出是'0 1 2 3'.但类似代码的输出是'1 1 1 1'.

for(i = 0 ;i < 5;i++){
    int j;
    if(i)
        printf("%d ",j);
    j = i;
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,在'for'循环的整个周期期间,j仅在堆栈上分配一次,并且在迭代期间使用相同的值.另外,如果我将j的声明移到for循环中,我会得到预期的结果.我在这里错过了什么?

PS - 当我在我的个人计算机上运行相同的代码时,我得到了预期的输出.但在生产方面却有所不同.

c variables stack for-loop automatic-storage

4
推荐指数
1
解决办法
1501
查看次数

标签 统计

automatic-storage ×1

c ×1

for-loop ×1

stack ×1

variables ×1