循环如下:
do;
while(1);
为什么上面的循环没有给出语法错误?
答案 0 :(得分:7)
该代码看起来似乎是为了模糊其含义,但如果我们查看draft C99 standard部分6.8.5
迭代语句,那么do while的语法是:
do statement while ( expression ) ;
和语句可以是表达式语句,而表达式语句又可以是{em>空语句,它是;
。所以它与:
do
;
while(1);
我们可以从6.8.3
部分看到表达式和空语句段 3 说:
null语句(仅由分号组成)不执行任何操作。
答案 1 :(得分:6)
答案 2 :(得分:2)
这是一个等同于
的语句do-while循环do
no_op(); // do nothing
while (1);
或
do {
}
while (1);
答案 3 :(得分:2)
就个人而言,我讨厌空陈述,我非常乐意将它们从标准中移除。
我首选的表格是
do continue;
while (1);
答案 4 :(得分:1)
因为它是一个带有空语句;
的无限循环。
do
{
;
}while(1);