<分区>
假设我们有一个迭代多次的循环:
for (int i=0; i < 1000000; ++i) {
int s = 100;
s += i;
cout << s;
}
我们只在循环体内使用 s
,所以理想情况下我们希望在那里声明它,这样它就不会污染封闭的命名空间。
我想知道这是否有任何缺点。例如,是否会产生性能成本,因为程序在每次迭代时都重新声明 s
?
<分区>
假设我们有一个迭代多次的循环:
for (int i=0; i < 1000000; ++i) {
int s = 100;
s += i;
cout << s;
}
我们只在循环体内使用 s
,所以理想情况下我们希望在那里声明它,这样它就不会污染封闭的命名空间。
我想知道这是否有任何缺点。例如,是否会产生性能成本,因为程序在每次迭代时都重新声明 s
?
最佳答案
概念上变量是在每次迭代时构建和销毁的。
但是它会影响性能吗?嗯,你可以查一下你的情况right here .删除第 7 行的 int
以在循环局部变量和函数局部变量之间切换。
结论:没有任何区别。组装是一样的!
因此,只需使用您的代码中有意义的内容即可。如果每次迭代需要一个对象,则每次都创建一个对象。优化器比你想象的更聪明。如果这还不够,您会返回分析数据和仔细调整,而不是广泛的指导方针。
关于c++ - 在循环体内声明一个变量有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43573774/