C++内层循环中定义变量和在外面定义比影响大吗

例如:

for(int i=0;i<999;i++){
    for(int j=0;j<999;j++);
}

内层循环每次都定义j会造成多大的消耗呢

10个回答

这个需要看你具体用什么编译器。不过主流编译器(如vs和gcc)这一块优化都比较好,不会反复分配变量。

没有任何区别,函数的定义是编译器的事情,运行的时候不存在什么定义,更没有什么开销。

以前我也有过这种担心,不过现在看完别人的评论,我有点豁然开朗了,在内层循环中定义变量到底会不会存在重复分配的问题,这涉及到编译器的优化。

这种基本可以忽略吧,一般都是提倡内层这样定义

以现在的运算速度,这个消耗基本可以忽略。

内层定义比较好,我猜的

虽然说函数的定义是编译器的事情,这种可以基本忽略,但有时候要考虑变量的作用域

你是说对编译时候的影响吗?应该是可以忽略不计的吧。。

除非是类对象或者结构体对象, 在里面与外面, 开销可能会不一样.
基本数据类型, 那是一样一样的, 编译器肯定会优化这个东西.
一般来说, 在进入函数时, 所有的栈变量都分配好空间了. 所以那个for变量写在哪里都是一样的. 具体你可以看一下反汇编代码, 全部就展现在你眼前了.

这种过,其实你自己做一下性能测试就清楚了,而且编译器都有各种优化开关。-O2

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问