标题:switch
只看楼主
lsp19991127
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:104
专家分:20
注 册:2018-10-30
结帖率:91.67%
已结贴  问题点数:20 回复次数:5 
switch
#include<stdio.h>
main()
{
    int a,b;
    a=2;
    b=5;
    switch(a-1)
    {
    case 0:
    case 1: b+=4;
    case 2:
    case 3: b*=4;
    case 4: b+=4;
    default:b/=4;
    }
    printf("a=%d,b=%d\n",a,b);
}b=10怎么来的?
搜索更多相关主题的帖子: switch main case default printf 
2018-11-09 21:29
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:0 
你的switch没有break,会从case 1开始顺序执行下面的全部代码

saber,别哭.
2018-11-09 21:31
lsp19991127
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:104
专家分:20
注 册:2018-10-30
得分:0 
回复 2楼 幻紫灵心
这里a=2,不是从case2开始执行吗
2018-11-09 21:34
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
得分:0 
switch (n)
{ case 1: 执行代码块1 break
case 2: 执行代码块2 break
default: 如果n即不是1也不是2,则执行此代码 }
switch (n) { case 1: 执行代码块1 break
case 2: 执行代码块2 break
default: 如果n即不是1也不是2,则执行此代码 }
工作原理:switch 后面的 (n) 可以是表达式,也可以(并通常)是变量。然后表达式中的值会与 case 中的数字作比较,如果与某个 case 相匹配,那么其后的代码就会被执行。break 的作用是防止代码自动执行到下一行。

对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-09 21:39
Tomorrw_I
Rank: 10Rank: 10Rank: 10
等 级:禁止访问
威 望:6
帖 子:406
专家分:1712
注 册:2018-10-16
得分:20 
你的代码里面,没有break!
也就是说  即使a-1=2.。。  匹配成功,他还是会继续运行下面的case语句

学C有用吗?
学C++有前途吗?
数据库有必要学吗?
……
别问,你还什么都不会,学就对了
……
2018-11-09 21:40
lsp19991127
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:104
专家分:20
注 册:2018-10-30
得分:0 
回复 5楼 Tomorrw_I
哦哦,明白了。谢谢了!
2018-11-09 22:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491122-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.066933 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved