我一直在努力养成在需要时定义琐碎变量的习惯。我一直对编写这样的代码持谨慎态度:
while (n < 10000) {
int x = foo();
[...]
}
我知道标准是绝对明确的,x
只存在于循环内部,但这在技术上是否意味着整数将在每次迭代时在堆栈上分配和释放?我意识到优化编译器不太可能做到这一点,但它保证吗?
例如,这样写是不是更好:
int x;
while (n < 10000) {
x = foo();
[...]
}
我不是专门指这段代码,而是指像这样的任何循环。
我用 gcc 4.7.2 对一个以这种方式不同的简单循环进行了快速测试,并生成了相同的程序集,但我的问题是,根据标准,这两个真的是相同的吗?