两个循环之间哪个最好?

时间:2015-01-01 16:04:59

标签: c

int i;
for(i=0;i<=5;++i)
{ printf("my name");
}

for(int i=0;i<=5;i++)
{  printf("my name");
}

向我解释两个循环的工作原理以及它们之间的区别以及哪一个最好?

2 个答案:

答案 0 :(得分:2)

我猜第二个循环是

for(int i=0;i<=5;i++) {  printf("my name\n"); };

第一个的区别是i的范围。对于上面的循环,它只是for循环的主体。

所以如果你在两个循环之后添加类似

的东西
printf("finally i=%d\n", i);

它不会在第二种情况下编译(因为i甚至不会在最后printf内定义。

阅读变量scopes上的wikipage。

BTW:作为初学者:始终使用printf结束\n中的格式字符串(或了解fflush)。并始终编译所有警告&amp;调试信息(gcc -Wall -Wextra -g

答案 1 :(得分:1)

这里没有“更好”或“更差”,因为代码片段在很大程度上有所不同:

  • 在第一个片段中,变量i在循环后保留在范围内,而
  • 在第二个循环中,变量超出范围。

当你需要在循环后使用i的值时,使用第一个构造;否则,使用第二个构造。

在循环之后需要使用i的一个常见情况是循环可能在从循环标题到达停止条件之前结束,例如,因为您在循环中有一个条件break循环的中间。但是,一般情况下,您应该更喜欢第二种形式,它将循环变量的范围保持为循环本身。