我正在学习C,我对while有疑问。在一次练习中我已经:
while(1){
while((sockacc = accept(ds_sock,&client,&length)) == -1);
--other instructions--
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我第二个while的功能是什么?我的意思是,我知道接受呼叫的用途。我不明白如果体内没有任何东西,为什么要使用 while 条件。
退后一步。请记住的含义
while(c) s;
Run Code Online (Sandbox Code Playgroud)
只是一种简短的写法:
CONTINUE:
if (c)
goto BODY;
else
goto BREAK;
BODY:
s;
goto CONTINUE;
BREAK: ;
Run Code Online (Sandbox Code Playgroud)
当然和break;是continue;和goto BREAK;。goto CONTINUE;循环并不神奇;它是一种神奇的东西。它们只是编写一堆goto陈述的一种简短而愉快的方式。
所以你的程序:
while(1){
while((sockacc = accept(ds_sock,&client,&length)) == -1);
--other instructions--
}
Run Code Online (Sandbox Code Playgroud)
只是一种更好的写法:
OUTER_CONTINUE:
if (1)
goto OUTER_BODY;
else
goto OUTER_BREAK;
OUTER_BODY:
{
INNER_CONTINUE:
if ((sockacc = accept(ds_sock,&client,&length)) == -1)
goto INNER_BODY;
else
goto INNER_BREAK;
INNER_BODY:
;
goto INNER_CONTINUE;
INNER_BREAK: ;
--other instructions--
}
goto OUTER_CONTINUE;
OUTER_BREAK: ;
Run Code Online (Sandbox Code Playgroud)