循环如下:
do;
while(1);
Run Code Online (Sandbox Code Playgroud)
为什么上面的循环没有给出语法错误?
该代码看起来像是为了模糊其含义而编写,但如果我们查看草案C99标准部分6.8.5 迭代语句,do while的语法是:
do statement while ( expression ) ;
Run Code Online (Sandbox Code Playgroud)
并声明可以是一个表达式语句这反过来又可以是一个空语句是什么;是.所以它是一样的:
do
;
while(1);
Run Code Online (Sandbox Code Playgroud)
我们可以从6.8.3 表达式和null语句中看到段落3说:
空语句(仅由分号组成)不执行任何操作.