在此循环中创建了多少个临时变量?

时间:2011-10-17 02:18:29

标签: c

for(i = 0; i < 5; i++){
    int j;
    printf("%X\n", &j);
}

在此循环中创建了多少个临时变量j

j是创建了5次,还是仅创建一次?

虽然地址相同..

3 个答案:

答案 0 :(得分:5)

5。虽然编译器当然可以将其优化为1。

答案 1 :(得分:1)

假设您稍微修改了代码:

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

您会在每次迭代中看到j的不同值,清楚地表明j每次循环都会得到一个值,即使j的地址是在每个循环中相同。这将更清楚地证明j在每次迭代时被初始化(并且在每次迭代时被逻辑创建和销毁)。

答案 2 :(得分:0)

嗯,这里有两件事要提,

变量的位置:

变量j的位置是下一个“}”。当程序接近括号时,变量j就会死亡。

时间地点:

计算机中有一种机制,它们倾向于保留广泛使用的变量并防止它们死亡,因为它们可能需要再次使用。因此,计算机很可能实际上不会生成变量j 5次。

结论:

就你的问题的答案而言,你可以说5,因为想要问你这个问题的人希望你对变量的位置有一个了解。