我想知道这段代码:
int main(){
int p;
for(int i = 0; i < 10; i++){
p = ...;
}
return 0
}
Run Code Online (Sandbox Code Playgroud)
与那一个完全一样
int main(){
for(int i = 0; i < 10; i++){
int p = ...;
}
return 0
}
Run Code Online (Sandbox Code Playgroud)
在效率方面?我的意思是,在第二个例子中,p变量将被重建10次?
这是代码保持隐藏的语义差异,因为它没有对int产生影响,但它对人类读者产生了影响.你想携带你在...循环外做的任何计算的值吗?你不这样做,所以你应该编写反映你意图的代码.
一个人类读者需要寻求这个功能,并寻找其他用途,p以确认自己所做的只是过早的"优化"而没有任何更深层的目的.
假设它对您使用的类型有所不同,您可以通过注释代码来帮助人类读者
/* p is only used inside the for-loop, to keep it from reallocating */
std::vector<int> p;
p.reserve(10);
for(int i = 0; i < 10; i++){
p.clear();
/* ... */
}
Run Code Online (Sandbox Code Playgroud)