以下两个代码片段哪个更快?为什么?
在 for
语句外部声明的循环索引变量:
size_t i = 0;
for (i = 0; i < 10; i++)
{
}
和
for
语句中声明的循环索引变量:
for (size_t i = 0; i < 10; i++)
{
}
两者都不是等效的,并且会产生相同的机器代码。
(编译器将从第一个示例中删除两次i
的冗余初始化。
声明变量的位置与性能和内存使用关系不大。
for (size_t i = 0; i < 10; i++)
通常被认为是最具可读性的。
for (i = 0; i < 10; i++)
的优点是您可以在循环完成后使用 i
变量 - 这在迭代次数可变时最有意义。
唯一的区别是,在第一个上,i 是一个全局变量,第二个是仅用于循环的局部变量。