0

快一个。以下是等价的吗?他们中的任何一个是否比其他人更经济或更“正确”?

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

注意第二个而不是第三个中的右表达式括号和分号之间的空格。

过去我倾向于使用第一个。塔

4

3 回答 3

3

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

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

于 2012-04-23T15:26:05.267 回答
2

它们都是完全等价的,并且应该使用任何半理智的编译器生成相同的程序。空格不重要,两者都{}代表;空语句。

于 2012-04-23T15:25:24.040 回答
1

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

while (whatever)
    ;

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

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

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

于 2012-04-23T15:30:00.757 回答