首页 > 代码库 > switch 与 whille相互套用
switch 与 whille相互套用
一直自以为还比较了解C++,这两天写个小工具结果出现了个bug,查了几个小时。现在才发现我这么水。
switch是C++后来推出了,目的在于提高代码结构清晰度。
但是switch与while连用时是有坑的。
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 int tmp = 0; 7 8 printf("while switch:\n"); 9 do{10 scanf("%d", &tmp);11 switch(tmp)12 {13 case 1:14 printf("case 1\n");15 break;16 case 2:17 case 3:18 printf("case 2, 3\n");19 break;20 default:21 printf("default case\n");22 goto switch_while;23 break;24 }25 26 }while (true);27 28 switch_while:29 printf("switch while:\n");30 31 scanf("%d", &tmp);32 switch(tmp)33 {34 case 1:35 printf("case 1\n");36 break;37 case 2:38 case 3:39 printf("case 2, 3\n");40 break;41 default:42 printf("default case\n");43 do {44 scanf("%d", &tmp);45 if (tmp <= 1)46 {47 printf("do while <= 1\n");48 continue;49 }50 else if(tmp <= 3)51 {52 printf("do while 2 - 3\n");53 break;54 }55 else56 {57 printf("do while > 3\n");58 }59 }while(0);60 break;61 }62 return 0;63 }
switch内层嵌套while时,while的跳转符号会打乱switch的跳转。
说好的在do {} while中continue的结果直接退了出来。 这个应该是g++后来添加switch的一点bug。
而do {} while中套用switch也是有出现意外的情况的,原因也是一样由continue和break产生的符号链接冲突。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。