switch中case和break

本文通过示例代码分析了在C语言中,switch语句中不使用break关键字时程序的运行结果。当case后面不加break时,程序会连续执行后续的所有case语句,直到遇到break或switch结束。这种行为可能导致意外的输出,因此通常每个case后推荐使用break来确保只执行匹配的单一语句块。

突然想到一个问题,如果switch语句中,case的后面没有加break会怎么样呢?试试看,哈哈

/*可以猜想一下程序的运行结果。*/
#include "stdio.h"

int main()
{	
	char a = 0;
	printf("不加break\n");
	switch(a){
		case 0:printf("1\n");
		case 1:printf("2\n");
		case 2:printf("3\n");break;
		case 3:printf("4\n");
		default :break;
	}
	printf("加入break\n");
	switch(a){
		case 0:printf("a\n");break;
		case 1:printf("b\n");break;
		case 2:printf("c\n");break;
		case 3:printf("d\n");break;
		default :break;
	}
	return 0;
}
结果如下:
不加break
1
2
3
加入break
a

分析结果我们可以发现:
a的值逐个和 case 后的常量表达式比较,若不等则继续往下比较,若一直不等,则执行 default 后的语句;若等于某一个常量表达式,则从这个表达式后的语句开始执行,并执行后面所有 case 后的语句。
switch 语句不会在执行判断为真后的语句之后跳出循环,而是继续执行后面所有 case 语句。在每一 case 语句之后增加 break 语句,使每一次执行之后均可跳出 switch 语句,从而避免输出不应有的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值