请问C语言里switch里case里可以有if语句吗?
switch(i){
case 1:
if(....)
代码。。。。
else
代码。。。
break;
case 2:
代码。。。。
break;
}
这样加if语句对吗? 展开
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
不过要提醒你一点迹滚禅 , 有的编译器做得不是很智能, 在其中case下不加{}这样的限制符号可能备轿会姿尘出错.
所以对你的代码, 我推荐的用法是
switch(i){
case 1:
{
if(....)
代码。。。。
else
代码。。。
break;
}
case 2:
{
代码。。。。
break;
}
}
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
*/
甚至下面这种写迅毕法都是允许的,但是要想当小心你岁镇的逻辑。
switch(i){
case 0:
if(xxx){
yyyyy;
case 1:
zzzzz;
}
}