c语言case后加什么,c++ switch语句的使用(case 后面可以跟N个语句)

switch语句在处理多分支语句时是一种清晰结构(相比于一系列的if else if ...),

在一般书上的讲解时会给出如下的一般形式:

switch(表达式){

case 常量表达式1: 语句1;

case 常量表达式2: 语句2;

case 常量表达式n: 语句n;

default: 语句n+1;

}

switch后的括号里面

是一个表达式,根据这个表达式返回的值(通常是多值),我们来执行相应的语句,这就是下面

case语句所做的事情,case相当于一个if判断,所谓的常量表达式n其实就是switch后面表达式的值。

当我们看到这个switch语句的一般形式的时候,我们总会产生一系列的疑问:

(1)switch 语句在实际应用中一般怎么用?、

(2)case 后面可以跟几个语句?

接下来我们来解答这两个问题:

(1)在实际中我们习惯在每一个case语句最后加上一个break,跳出switch语句,如果我们不写break表达式,

那么程序还是会继续向下执行,去判断下一个case,从而浪费时间。当然你也可以利用这个特点来处理一些问题,

就像研发最常跟测试他们说的那句话:“这是特性,不是BUG!”,最后default语句可有可无,具体的选择看具体的

情况。

(2)上面的一般形式中case语句后只写了一个语句,最开始学的时候我特别疑惑,case后的语句只能跟

一个吗?我有很多语句怎么办,我在case语句里面还有if语句怎么办,其实这些担忧都是没有必要的,在case

语句后面可以有N多语句,这些语句的书写跟在正常逻辑下无区别,你在一个函数里怎么写if语句,在这里就怎么

写。下面我给出个具体例子来演示switch语句:

switch(in_temp)

{

case 1:

if (input_num == 0)

{

i--;

}else

{

i--;

grade -= grade / 10;

// if grade < 0 set grade = 0

grade = grade > 0 ? grade : 0;

if (input_num > number)

{

printf("Bigger than number\n",input_num);

}else

{

printf("Smaller than number\n",input_num);

}

}

break;

case 2:

i--;

grade -= (grade / 10);

grade = grade > 0 ? grade : 0;

// is even number

if (input_num % 2 == 0)

{

printf("Not prim\n");

}else

{

printf("Is prim\n");

}

break;

case 3:

i--;

grade -= (grade / 10);

grade = grade > 0 ? grade : 0;

//test the Prim() function

//number = 457;

if (Prim(number))

{

int leftn;

int rightn;

scanf("%d %d", &leftn, &rightn);

// output the Prim in [leftn,rightn]

for (int j = leftn; j <= rightn; ++j)

{

/* code */

if (Prim(j))

{

printf("%d ", j);

}

}

printf("\n");

}else printf("Not \n");

break;

case 4:

i--;

grade -= (grade / 10);

grade = grade > 0 ? grade : 0;

// judge the number can divide by 3

if (number % 3 == 0)

{

/* code */

printf("can multi by 3\n");

}else printf("can not multi by 3\n");

break;

default: break;

}

}

由上面的例子,我们就很清晰的看到了switch语句的应用。

谢谢你的阅读!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值