用于C/C++中的循环变量优化

msc*_*msc -1 c c++ optimization for-loop

遵循两个代码片段哪个更快?为什么?

for语句外声明循环索引变量:

size_t i = 0;
for (i = 0; i < 10; i++) 
{

}
Run Code Online (Sandbox Code Playgroud)

for语句中声明的循环索引变量:

for (size_t i = 0; i < 10; i++) 
{

}
Run Code Online (Sandbox Code Playgroud)

Lun*_*din 6

它们都不相同,并且会产生相同的机器代码.

(编译器i将从第一个示例中删除两次冗余初始化.)

声明变量与性能和内存使用几乎没有关系.

for (size_t i = 0; i < 10; i++) 通常被认为是最具可读性的.

for (i = 0; i < 10; i++)有一个优点,你可以i在循环完成后使用变量 - 这在迭代次数可变时最有意义.