【发布时间】:2016-05-23 05:30:00
【问题描述】:
我的产品中有类似以下的代码。据我说,输出是'0 1 2 3'。但是类似代码的输出是'1 1 1 1'。
for(i = 0 ;i < 5;i++){
int j;
if(i)
printf("%d ",j);
j = i;
}
我的理解是 j 在整个“for”循环期间只在堆栈上分配一次,并且在迭代期间使用相同的值。另外,如果我将 j 的声明移到 for 循环之外,我会得到预期的结果。我在这里错过了什么?
PS - 当我在我的个人机器上运行相同的代码时,我得到了预期的输出。但在生产上就不同了。
【问题讨论】:
标签: c variables for-loop stack automatic-storage