请问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