int i;
for(i=0;i<=5;++i)
{ printf("my name");
}
或
for(int i=0;i<=5;i++)
{ printf("my name");
}
向我解释两个循环的工作原理以及它们之间的区别以及哪一个最好?
答案 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
循环的中间。但是,一般情况下,您应该更喜欢第二种形式,它将循环变量的范围保持为循环本身。