任何人都可以解释switch,while和continue的交互吗?
Posted
技术标签:
【中文标题】任何人都可以解释switch,while和continue的交互吗?【英文标题】:Can anyone explain the interaction of switch, while and continue? 【发布时间】:2019-08-05 09:04:48 【问题描述】:这里的switch语句是如何执行的?
我对continue
的使用特别感兴趣。
#include <stdio.h>
int main()
char ch = 'A';
while (ch <= 'D')
switch (ch)
case 'A':
case 'B':
ch++;
continue;
case 'C':
case 'D':
ch++;
printf("%c", ch);
这会输出DE
,如您所见live on coliru。
【问题讨论】:
continue;
对应while
这里
break
作用于最里面的for
、do
、while
或switch
。 continue
仅适用于最里面的 for
、do
或 while
。这种差异可能是一个问题。
对于像这样的简短程序,一个好的开始是在调试器中运行它并遵循执行路径。在没有优化的情况下编译可能对此很有用。
代码打印什么?
【参考方案1】:
简答:Continue
对应于代码中的while
循环。
最初,ch
的值是A
并且它匹配第一个案例,并且由于您的案例没有中断,一旦触发了一个案例,切换将遍历所有案例(直到中断,退出,继续,案件结束等...)。因此,它也输入 case B
并将 ch
增加到 B
。由于遇到continue
,它会跳过其余指令并开始while
循环的下一次迭代。
您可以在debugger 中运行它以了解这些内容。如果需要,您还可以使用老式的 printfs。
还有关于continue in switch的SO线程详细讨论
【讨论】:
【参考方案2】:这里的 char 变量 'A' 是 65,'D' 是 68。如果 char 值小于或等于条件下的 while 循环将运行。然后在 switch 条件中 ch 是您之前定义的值,然后变量值与 case 的条件匹配并增加 ch 的值
【讨论】:
以上是关于任何人都可以解释switch,while和continue的交互吗?的主要内容,如果未能解决你的问题,请参考以下文章
04-01 Java switchforwhiledo while语句,循环嵌套,跳转语句breakcontinuereturn
编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。