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                 else
56                 {
57                     printf("do while > 3\n");
58                 }
59             }while(0);
60             break;
61     }
62     return 0;
63 }

switch_while.cpp

switch内层嵌套while时,while的跳转符号会打乱switch的跳转。

说好的在do {} while中continue的结果直接退了出来。 这个应该是g++后来添加switch的一点bug。

而do {} while中套用switch也是有出现意外的情况的,原因也是一样由continue和break产生的符号链接冲突。

switch 与 whille相互套用

时间: 2024-08-13 11:18:18

switch 与 whille相互套用的相关文章

路由交换-vlan聚合配置

某公司拥有多个部门且位于同一网段,为了提升业务安全性,将不同部门的用户划分到不同VLAN中.现由于业务需要,不同部门间的用户需要互通. 所示,VLAN2和VLAN3为不同部门,现需要实现不同VLAN间的用户可以互相访问. 可以在Switch上部署VLAN聚合,实现VLAN2和VLAN3二层隔离.三层互通,同时VLAN2和VLAN3采用同一个子网网段,节省了IP地址. 组网说明: 配置思路 采用如下思路配置VLAN聚合: 把Switch接口加入到相应的sub-VLAN中,实现不同sub-VLAN间

if、switch语句

语句块 块:即为复合语句,指由一对花括号括起来的多条java语句. 语句块中可以包含另外一个语句块. 语句块决定了变量的作用域. 语句块中声明的变量只能在该语句块以及内部语句块中使用. 不能在嵌套的两个语句块中声明重名的变量. if语句 if语句是java语言选择控制或分支控制语句之一,用来对给定条件进行判定,并根据判定的结果(真或假)决定执行给出的两种操作之一. 单分支if语句:if(条件表达式){语句块} 双分支if语句:if(条件表达式){语句块1}else{语句块2} 多分支if语句:i

Part10 - (图文)NSX系列之创建Logical Switch

以云计算环境为例,假设,构建一个vRealize Automation的私有或公有云平台,就一定会涉及到Multi-Tenants的问题.不同的Tenant自然有不同的安全等级.隔离要求或者独有的IP地址段讯息等.理论上NSX的Logical Switch会创建一个广播域或Segment到分配的Tenant这边,然后通过Logical Wire连接起来.但是,Logical Switch并不等同于vDS上的Distributed Port Groups.Logical Switch会通过vDS的

Android组件间的相互调用

我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity) 2.Activity如何通过Binder调用Service的一个方法.(研究这个问题,考虑到与服务器端交互的动作,打包至Service,Activity只呈现界面,调用Service的方法) 结构图见如下:效果图如下:点击“start service”按钮,启动Service,然后更改Activ

底部菜单中用fragment,fragment中套用PagerSlidingTabStrip,切换底部时viewpager消失

今天在开发时遇上一个问题,我用的框架是底部菜单四个按钮+fragment,然后主页中的fragment套用了PagerSlidingTabStrip,PagerSlidingTabStrip中是用Viewpager+Tab组合进行点击切换页面或者滑动切换菜单,就这样实现了我想要的功能,可是当我在底部菜单中相互切换时,PagerSlidingTabStrip中的Viewpeger消失了,这是怎么产生的呢?官方的Demo没有组合起来使用,所以没有问题,现在组合后问题就出来了,我换用了几个方法都没有解

中级JavaScript例子, 如何实现一个简单实用的模板套用机制, GXTemplate , 第一章(估计要写9章)

我们是刚刚成立的, 一家传统的软件开发公司(只有几个人的小公司), 主营业务就是传统行业软件项目的外包. 由于这种项目需要的技术不深, 但是对开发效率有很高的要求, 所以我们在慢慢的摸索一下快速开发模式. 同时也愿意把其中不杂乱的部分,分享出来. 这一系列的文章主要是针对GXTemplate, 一个模板套用类库 (谈不上框架) 这并不是一个 "如何使用" 的教程 , 而是一个 "如何创造" 这种类库的教程. 特点是, 我们会把整个创造过程, 由v0.1的原始版本开始

如何实现Windows Phone代码与Unity相互通信(事件方式)

一些废话 昨天写一篇今天写一篇.不是我闲的蛋疼,是今天一天碰到了好几个恼人的问题,浪费一天时间搞定.本文将是一篇比较有用的文章,当然前提是你要开发Unity游戏并发布到WP上.好了.不废话了.进入正文. 实现Windows Phone代码与Unity相互通信或者调用,一般来讲有两种办法,一种是在Unity中定义事件,在wp代码中对其进行注册,然后在unity中某些情况下触发该事件,在wp代码中执行注册该事件的方法: 另外一种是插件方式,即在wp中编写dll插件,放在unity的Assets/Pl

C#代码与JAVASCRIPT函数的相互调用

问:1.如何在JavaScript访问C#函数?2.如何在JavaScript访问C#变量?3.如何在C#中访问JavaScript的已有变量?4.如何在C#中访问JavaScript函数? 问题1答案如下:javaScript函数中执行C#代码中的函数:方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;        2.在前台写一个js函数,内容为document.getElementById("btn1").click();        3.

DatePickerDialog的使用和套用

日期的选择控件DatePickerDialog 1.系统自带DatePickerDialog的使用: private Calendar calendar; private int mYear; private int mMonth; private int mDay; private static final int DATE_DIALOG_ID = 0; private DatePickerDialog datePickerDialog; private DatePickerDialog sh