找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3457|回复: 29
打印 上一主题 下一主题
收起左侧

请教C语言SWITCH语句流程的问题

  [复制链接]
跳转到指定楼层
楼主
ID:47286 发表于 2020-10-19 18:11 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
教材上都说if.....else if是挨着找 有多少个else if就找多少个 而 switch是直接跳转 我想问的是 假设有5个case 而要查找的值在这5个case之外 那么这个语句是把12345都搜一遍发现没有才走default还是直接就去default了 它怎么知道查找值在不在范围内
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:47286 发表于 2020-10-19 18:35 | 显示全部楼层
12138黄晨瑞 发表于 2020-10-19 18:16
程序是从上往下读取的,应该也是一个一个的从case1234往下读吧,最后都不满足才会是default。不满足你给的c ...

那岂不是和if....else if一样了 在有很多个选项的时候 效率并不比if语句好啊 为什么还要这么个东西

if.....else if里 如果有20个else if 假设都不是 程序也会走20个 教材里说switch的优点 不就是多分支直接跳转吗 每一个case只是个标签 我能理解假设20个case时 可以直接跳到任何一个 但假设20个都不是呢 它也都扫一遍么
回复

使用道具 举报

板凳
ID:47286 发表于 2020-10-19 23:34 | 显示全部楼层
8楼9楼两位前辈 你俩说的正相反啊 呃。。。。。。。。
回复

使用道具 举报

地板
ID:47286 发表于 2020-10-20 00:01 | 显示全部楼层
hhdsdy 发表于 2020-10-19 23:44
就多个选择的话,你不觉得switch看起来比if简洁直观吗?

哥 咱不讨论这个 用法不一样
回复

使用道具 举报

5#
ID:47286 发表于 2020-10-20 15:29 | 显示全部楼层
hhdsdy 发表于 2020-10-20 00:10
“那岂不是和if....else if一样了 在有很多个选项的时候 效率并不比if语句好啊 为什么还要这么个东西”
...

你误会了 我意思是说 不讨论看着舒服不舒服 只聊switch这家伙怎么干活
回复

使用道具 举报

6#
ID:47286 发表于 2020-10-20 15:39 | 显示全部楼层
12138黄晨瑞 发表于 2020-10-20 10:02
理论上是这样的,而且程序都是从上往下读取的呀,他不能跳着读的

你说的这点我有不同看法 我测试过在switch中多分支可以随便排列 比如3个分支1 3 5 可以1 5 3 也可以5 3 1 结果都是正确的
回复

使用道具 举报

7#
ID:47286 发表于 2020-10-20 15:47 | 显示全部楼层
黄youhui 发表于 2020-10-20 12:09
switch语句如果不在case后面加brea关键字的话可以选择插入执行点,从符合条件的语句开始从上往下执行,知 ...

感谢 你让我学到switch的新用法了 可能很普通 但我过去不知道也没想过

每个case都对应break的情况下 switch是对比一下标签里没50就过去 还是真进去从1到3找一遍 没50才跳出

num=50;

switch(num)
{
case 1:
break;

case 2:
break;

case 3:
break;

defalut:
break;
}
回复

使用道具 举报

8#
ID:47286 发表于 2020-10-20 16:13 | 显示全部楼层
我个人理解 假设 a=2 分支是 1 2 3

switch是扫描标签 有2直接到2 没有2走default
if.....else if是1不满足看2 2满足跳出 否则看3

那么a=50 分支还是 1 2 3 理论上switch应该也是走一下default然后跳出 但因为没这么用过 想请教前辈们是不是这样 比如会汇编的有没有用汇编看看switch具体怎么走流程的 我是光会用 底层的不了解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表