switch详解

switch语句概述

switch与case/default搭配使用,使得有程序在满足switch判断条件下,走多条case分支的其中一条或多条,否则走default分支,这个switch语句常用情况;

switch语法详解

首先,先附上常用switch语法,再以此进行解析。代码如下所示

int main()
{
    switch (IntFlag)
    {
    case 1:cout<<"分支1\n"; break;
    case 2:cout<<"分支2\n"; break;
    default:cout << "默认分支\n";
    }
    return 0;
}

当前代码执行过程如下:
若intFlag==2,则
先走case 2分支,输出”分支2“,
然后执行break语句,结束switch语句,
最后执行return 0;

知识点1:switch详解,传参-变量类型

作为switch各种分支的判断条件,intFlag类型只能是整型,因为case只处理有如下两种表现形式
1,整型变量
2,返回值为整型变量的表达式或函数
首先,整型变量就包括了如下类型

> char : 字符类型,若case后为整型,则强制转换为整型
> short: 短整型,最终强制转换为整型
> int  : 整型,作为便准的switch参数传入
> 
> 错误类型传参:char*float,double等,强转为整型是造成精度损失,
> 也不允许使用错误类型进行switch传参;

然后,表达式或函数的主要核心也是返回值类型-整型,不在赘述;

> 例如:
> 1,函数: int sum()
> 			{
>              return 2;
>           }
> 2,表达式:intx =1;传参为:5x+1    

知识点2:case详解,传参-常量类型

case只处理两种形式的数据类型
1,整型常量
2,字符型常量
首先,case核实为常量,与switch传进的实际参数进行数值匹配;

case匹配规则如下:

若case匹配数值为整型常量,则将switch的实参通过ascall码转换为整型后进行匹配
若case匹配数值为字符常量,则将switch的实参通过ascall码转换为字符型后进行匹配;

case匹配顺序如下:
1,若case语句后无break,return,go等跳出/结束语句,则根据先后顺序匹配,如下代码所示
若case语句匹配值之后,则依次执行当前case语句之后的所有操作,
若无case语句匹配值,则执行default语句后的操作;

    switch (IntFlag)
    {
    case 1:cout<<"分支1\n"; 
    case 2:cout<<"分支2\n"; 
    default:cout << "默认分支\n";
    }1)若IntFlag==1,则输出值为:
分支1
分支2
默认分支

(2)若IntFlag==2,则输出值为:
分支2
默认分支

(2)若IntFlag==3,则输出值为:
默认分支

1,若case语句后有break,return,go等跳出/结束语句,则根据先后顺序匹配,如下代码所示
(break与return的区别是跳出范围不同;
break是跳出switch语句,继续执行switch语句之后的操作;
return是跳出switch语句所在函数,继续执行switch语句所在函数后的操作)

switch (IntFlag)
    {
    case 1:cout << "分支1\n"; break;
    case 2:cout << "分支2\n"; return 0;
    case 0x31:cout<<"分支3\n"; break;
    default:cout << "默认分支\n"; break;
    }1)若IntFlag==1,则输出值为:
分支12)若IntFlag==2,则输出值为:
分支22)若IntFlag==3,则输出值为:
默认分支

知识点3:default详解
default语句在switch中是非必要的,也就是说switch允许不包含default语句;
它是当switch传参无法与任意一个case数值进行匹配时,则执行的默认(default)操作,

switch (IntFlag)
    {
    case 1:cout << "分支1\n"; break;
    case 2:cout << "分支2\n"; return 0;
    }
若IntFlag==3,则输出值为:()
无操作结束
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修道-0323

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值