简写C while循环

时间:2012-04-23 15:23:17

标签: c optimization while-loop

快一点。以下是等效的吗?并且它们中的任何一个都比其他更经济或“更正确”吗?

while (x==y) {}while (x==y) ;& while (x==y);

请注意闭合表达式括号与第二个分号之间的分号,而不是第三个分号。

我过去常常使用第一个。 TA

3 个答案:

答案 0 :(得分:3)

第二个和第三个之间没有区别。

第一个唯一的区别是可读性 - 你明确表示你想要一个无限循环,而不是你有一个拼写错误(额外;)。

答案 1 :(得分:2)

它们都是完全等效的,应该与任何半合一的编译器生成相同的程序。空白并不重要,{};都代表空语句。

答案 2 :(得分:1)

通常当你做这样的事情时,你仍然把分号放在它自己的行上,以明确它不仅仅是由意外添加:

while (whatever)
    ;

当然,通常只有当whatever有副作用时才会这样做,例如:

// skip to end of line:
while (((ch=getchar()) != '\n') && (ch != EOF))
    ;

您使用的空语句的确切语法形式极不可能影响生成的代码,因此这纯粹是为了优化读者,而不是编译器。