问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问C语言里switch里case里可以有if语句吗?

发布网友 发布时间:2022-04-23 09:30

我来回答

11个回答

热心网友 时间:2022-05-20 16:50

C语言里switch里case里是可以有if语句,但是要注意编程时的兼容情况。switch语句只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。

Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。直线翻译:switch语句,即“切换”语句;case即“情况”。

switch语句的语法如下(switch,case和default是关键字):

switch ( 常量表达式 ){

case 常量1 :语句;

case 常量2 :语句;

case 常量3 :语句;

...

case 常量n:语句;

default :语句;}

扩展资料

switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。 break语句是必须有的,它用来结束switch语句的执行。

如果所有case语句后面的表达式都不等于switch语句的表达式expr1的值川0执行default后面的默认语句序列。不过,default部分是可选的。如果没有这一部分,并遇到所有case语句都不匹配,那么,就不作任何处理而进入后续程序段的执行。

参考资料来源:百度百科——switch

热心网友 时间:2022-05-20 18:08

C语言switch语句的每个case中都可以嵌套使用if语句。

C语言提供的一种用于多分支选择的switch语句, 其一般形式为:

switch(表达式){ 
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;
}

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

注意事项

在case后的各常量表达式的值不能相同,否则会出现错误。

在case后,允许有多个语句,可以不用{}括起来。

各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

default子句可以省略不用。


为了避免程序从对应case一直往下执行,C语言提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。

示例,输入月份和年份,输出该年的该月有多少天:

#include <stdio.h>
int main(void){
    int m, y;
    printf("input month and year:    ");
    scanf("%d%d",&m, &y);
    switch (m){
        case 1:printf("31\n");  break;
        case 2:
            if ((y%4==0&&y%100!=0)||y%400==0)printf("29\n");
            else printf ("28\n");
            break;
        case 3:printf("31\n");  break;
        case 4:printf("30\n");  break;
        case 5:printf("31\n");  break;
        case 6:printf("30\n");  break;
        case 7:printf("31\n");  break;
        case 8:printf("31\n");  break;
        case 9:printf("30\n");  break;
        case 10:printf("31\n");  break;
        case 11:printf("30\n");  break;
        case 12:printf("31\n");  break;
        default:printf("error\n");
    }
    return 0;
}
/*
输入:2 2015
输出:28
*/

热心网友 时间:2022-05-20 19:42

可以的,
不过要提醒你一点 , 有的编译器做得不是很智能, 在其中case下不加{}这样的*符号可能会出错.
所以对你的代码, 我推荐的用法是
switch(i){

case 1:
{
if(....)

代码。。。。

else

代码。。。

break;
}

case 2:
{
代码。。。。

break;
}

}

热心网友 时间:2022-05-20 21:34

没问题的,放心用。在switch语句中,你可以完全拿case当标号使用。
甚至下面这种写法都是允许的,但是要想当小心你的逻辑。
switch(i){
case 0:
if(xxx){
yyyyy;
case 1:
zzzzz;
}
}

热心网友 时间:2022-05-20 23:42

可以的,switch是一种选择语句,跟if else不冲突的,这也能体现出c语言的灵活吧。

热心网友 时间:2022-05-21 02:06

switch的每个case都是一个分支,都可以使用各种C语言的语句

热心网友 时间:2022-05-21 04:48

可以。但是不建议这么做。显得程序冗长。

热心网友 时间:2022-05-21 07:46

可以的,并且很多时候都是这样用的~

热心网友 时间:2022-05-21 11:00

可以,语句是可以嵌套的 没问题

热心网友 时间:2022-05-21 14:32

必须可以啊

热心网友 时间:2022-05-21 18:20

可以的
没有规定case下面能有多少,什么语句
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绩效工资从工资里扣合法吗 无人机电机轴的主要功能有哪些? 闽侯南通多久发展 南通哪个位置最有潜力 南通未来的机遇有哪些 江苏南通的发展前景怎么样 南通这座城市未来发展前景怎样 我女儿阳历08年01月08日出生,{农历07年腊月初一}请高人帮忙改个名字... 我女儿是2012年1月10日10:35分出生的五行缺什么,取什么名字好 这种图片效果怎么做出来的,不是纯白板,仔细看有一个个均匀分布的小圆点... C语言中if和switch的嵌套是怎么回事? c语言中if中嵌套用switch吗 c语言里的if和switch语句? c语言中case和if哪个好? C语言if-else中的switch-case。 C语言这个IF条件和CASE分支一 c语言switch怎么用指针和if语句? c语言中CASE 问题? c语言if swtch case c语言中printf,if,case的用法 在C语言中SWITCH语句的各case句中,能出现if语句吗? C语言 case if语句 网络机顶盒摇控器按键反应慢是怎么回事? 阴阳师妖气封印是怎么回事,和副本挑战一样吗? 电视一直显示这个,遥控器怎么按都没反应?是怎么回事? 阴阳师悬赏封印有什么用处?领取地方在哪? 阴阳师悬赏封印山童在哪里最多 阴阳师山童在哪打 在哪个副本 阴阳师妖气封印怎么打 妖气封印玩法介绍 按了遥控器后隔好久电视才有反映 阴阳师鬼使黑妖气封印怎么容易刷出来 C语言if和switch一起用 C语言if和switch的嵌套 息屏时钟,费电严重吗 oppo息屏时钟不费电 华为手机的熄屏看时间费电吗?怎么解决? 熄屏时钟是不是很耗电 vivo手机的熄屏时钟耗电吗? 手机开息屏时钟一天要消耗多少电 Vivo x9s plus打开全天息屏时钟耗电大吗? 拼多多个人店如何升级到企业店铺? 拼多多个人店可以升级为企业店吗? 拼多多商家办了营业执照还可以升级为旗舰店吗 拼多多个人店铺能升级吗? 拼多多个人入驻可以升级企业店铺吗? 买了一个拼多多普通店铺,可以升级旗舰店吗? 拼多多店铺系统怎么更新 拼多多个人店铺升级旗舰店会不会下掉店铺内商品的资源位? 拼多多专卖店可以升级成旗舰店吗? 拼多多游戏账号出租怎么升级企业店铺? 拼多多个人店可以升旗舰店吗?需要升级企业店才行吗?升级企业店绑定的个人银行卡需要变更吗?