switch语句

switch也是分支结构的一种。并且我认为它的分支比if-else语句更加的明显一点。并且感觉他比if-else更简单,更像是一种最纯粹的分支结构。下面我就简单介绍一下我对switch语句的理解。

1、switch语句的一些基本结构

1.1switch语句的效果:

switch的整形表达式的值确定以后,会在case语句中寻找到具有相同值的整型常量表达式,然后执行这条表达式后面的语句。也就是说,switch语句写好以后就已经把各个分支路线都设计好了,根据输入的整形表达式的不同,进入不同的case路线。假如说输入的整形表达式的值在后面的case语句中找不到,那么就会执行default后面的语句。

case相当于一个入口,而在每个case语句后面都会加一个break,相当于一个出口。当计算机在执行代码的时候遇上了break,就会跳出当前switch语句。如果没有break,那么程序将会从第一个case一直执行到最后一个case,不会退出。所以break语句是必要的。

switch(整型表达式)

{

        case 整型常量表达式1:

        语句1;

        break;

        case 整型常量表达式2:

        语句2;

        break;

        ......

        default:

        语句n;

        break;

}

1.2、switch括号里的表达式

 switch括号里必须是整型或者枚举型,可以是int、long、long long、char等类型的表达式,可以是常量,也可以是变量。char类型虽然是字符类型,但是由于单个字符在计算机内也是由某些整数形式(ASCII码)存储的,所以它也可以认为是整型。

以下是几个例子:

#include<stdio.h>
int main()
{
    #1、常量整型
	switch (1)
	{
	case 1:
		break;
	}
	
    #2、变量整型
    int a=0;
	switch (a)
	{
	case 0:
		break;
	}
    
    #3、字符变量
	char b = 'm';
	switch (b)
	{
	case 'm':
		break;
	}
	return 0;
}

这几种形式都是可以运行的。 (这里没有加default语句,大家不要学我)

1.3、switch中的case

case后面需要加一个空格,然后输入常量,不可以是变量,可以是整型或者字符。然后加一个冒号,后面再写需要执行的语句。为了使代码清晰容易读懂,可以使用缩进符让执行语句比case语句靠后一点,是不是就像有从属关系了呢?

在每一个case语句中的代码最后,都加上一个break,这样才能跳出这个switch语句。如果没有break语句将会是下面的结果:

#include<stdio.h>
int main()
{
	int a = 0;
	switch (a)
	{
	case 0:
		printf("不要\n");
	case 1:
		printf("忘记\n");
	case 2:
		printf("加break\n");
	default:
		printf("哦!\n");
	}
		return 0;
}

最后从0到default全部执行了一遍。

1.4、switch语句中的default

在使用switch语句时,如果switch语句中的表达式中的值没有找到case语句中相匹配的值的话,就会最终执行default语句中的内容。如下示例:

#include<stdio.h>
int main()
{
	int a = 1;
	switch (a)
	{
	case 0:
		printf("case语句有这个值\n");
		break;
	default:
		printf("没有呢\n");
		break;
	}
	return 0;
}

2、switch语句的一些问题

2.1、switch语句中的case和default的顺序问题

case与default语句并没有顺序要求,default可以放在任何地方,但通常情况下会把它放在最后。

除此之外case表达式也不要求按照值的大小顺序排列,但是一般也会按照顺序来写。

2.2、就再强调一下break的重要性吧

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名亡实存

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值