我的C编程老师声称这是C中while循环的正确声明.
int main(int argc, char *argv[]) { while() { fork(); } }
据他说,它与写作完全相同:
int main(int argc, char *argv[]) { while(1) { fork(); } }
'while()'代码是否可以在任何C标准中编译?
好吧,你的老师错了.
while
loop期望表达式作为条件.所以你不能把它留空.
这与for
循环略有不同,其中条件可以为空:
for(;;) { }
C标准定义了§6.8.5,1迭代语句中的语法
而(表达)陈述
做声明而(表达);
for(expressionopt; expressionopt; expressionopt)语句
for(declaration; expressionopt; expressionopt)语句
正如你所看到的,表达是不可选的while
循环.但它是for
循环的可选项.