为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
泛舟湖上清波郎朗 2019-08-26 09:40:51
在循环中声明变量是否有任何开销?(C ++)我只是想知道如果你做了这样的事情会有任何速度或效率的损失:int i = 0;while(i < 100){     int var = 4;     i++;}宣告int var一百次。在我看来会有,但我不确定。这样做会更实际/更快:int i = 0;int var;while(i < 100){     var = 4;     i++;}或者它们是相同的,速度和效率方面的?
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-08-26
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

这些天最好在循环中声明它,除非它是一个常量,因为编译器将能够更好地优化代码(减少变量范围)。

编辑:这个答案现在已经过时了。随着后经典编译器的兴起,编译器无法弄清楚的情况越来越少。我仍然可以构建它们,但大多数人会将构造归类为坏代码。


查看完整回答
反对 回复 2019-08-26
?
青春有我

TA贡献1784条经验 获得超8个赞

#include <stdio.h>int main(){
    for(int i = 0; i < 10; i++)
    {
        int test;
        if(i == 0)
            test = 100;
        printf("%d\n", test);
    }}

上面的代码总是打印100次10次,这意味着内部循环中的局部变量每个函数调用只分配一次。


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 464 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信