saa*_*ame 1 c while-loop switch-statement
此代码由于某种原因起作用,但它根本没有意义.
#include <stdio.h>
int main(void)
{
switch(1)
{
case 0:
while(1)
{
case 1: puts("Works"); break;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么它确实有效以及它有什么应用程序?
其工作原因有些不直观:语句的case
标签switch
非常类似于常规标签,即设计用于goto
语句的标签.您可以在代码中的任何位置放置此类标签.
事实证明,相同的规则适用于case
标签:您可以将它们放在相应switch
语句中的任何位置,这些语句偶然包含任何嵌套循环的主体.
你可能想要在语句正文中的控制语句中放置标签的原因switch
甚至更不直观:事实证明你可以使用一个看起来很麻烦但非常直观的Duff's Device构造来执行循环展开.正是这种结构导致了将switch
语句标签嵌入语句中的其他控制结构中的想法.