我的C编程老师声称这是C中while循环的正确声明。
int main(int argc, char *argv[])
{
while()
{
fork();
}
}
据他说,这跟写作完全一样:
int main(int argc, char *argv[])
{
while(1)
{
fork();
}
}
'while()'代码是否可以在任何C标准中编译?
答案 0 :(得分:9)
嗯,你的老师错了。
while
循环期望表达式作为条件。所以你不能把它留空。
这与for
循环略有不同,但条件可以为空:
for(;;) {
}
C标准定义了§6.8.5,1迭代语句
中的语法while(表达式)语句
做语句while(表达式);
for(expressionopt; expressionopt; expressionopt)statement
for(declaration; expressionopt; expressionopt)statement
正如您所看到的,表达式对于while
循环而言不是是可选的。但它是for
循环的可选项。
答案 1 :(得分:1)
while()
代码不起作用。当你尝试编译时,你可以看到原因。您将得到的错误如下,
test1.c:7:11: error: expected expression before ‘)’ token
while()
^
while()
需要在()
内添加表达式。
答案 2 :(得分:1)
循环需要有关何时执行的条件。所以不,你的老师可能已经喝醉了
答案 3 :(得分:0)
C Standard, section 6.8.5表示语法为while (expression) statement
。 expression
不是可选的。
while ( expression ) statement
如果您的编译器接受第一个程序,那么您的编译器会有一些额外的东西使它不符合要求:它不是C编译器。