在循环中声明变量是否有任何开销?(C ++)

在循环中声明变量是否有任何开销?(C ++)

我只是想知道如果你做了这样的事情会有任何速度或效率的损失:

int i = 0;while(i < 100){
    int var = 4;
    i++;}

宣告int var一百次。在我看来会有,但我不确定。这样做会更实际/更快:

int i = 0;int var;while(i < 100){
    var = 4;
    i++;}

或者它们是相同的,速度和效率方面的?


泛舟湖上清波郎朗
浏览 467回答 3
3回答

守着一只汪

局部变量的堆栈空间通常在函数范围内分配。因此,循环内部不会发生堆栈指针调整,只需指定4即可var。因此,这两个片段具有相同的开销。

慕莱坞森

这些天最好在循环中声明它,除非它是一个常量,因为编译器将能够更好地优化代码(减少变量范围)。编辑:这个答案现在已经过时了。随着后经典编译器的兴起,编译器无法弄清楚的情况越来越少。我仍然可以构建它们,但大多数人会将构造归类为坏代码。

青春有我

#include&nbsp;<stdio.h>int&nbsp;main(){ &nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;10;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;test; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&nbsp;==&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test&nbsp;=&nbsp;100; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",&nbsp;test); &nbsp;&nbsp;&nbsp;&nbsp;}}上面的代码总是打印100次10次,这意味着内部循环中的局部变量每个函数调用只分配一次。
打开App,查看更多内容
随时随地看视频慕课网APP