switch语句-穿透效果

switch语句是我大学学c语言的一个痛点之一,现在拿来再看,终于理解了。

  【c语言的switch语句是穿透的】这句是理解switch语句的关键:也就是说当程序判断某个case的条件为真后,它将在执行该case所带的的语句块之后,不再对后面的case的条件进行判断而直接执行。

  

测试程序(Java代码):

	//switch
		System.out.println("test switch:");
		char level='c';
		switch(level){
		case 'a':
			System.out.println('a');
		case 'b':
			System.out.println('b');
		case 'c':
			System.out.println('c');
		case 'd':
			System.out.println('d');
		default:
			System.out.println('end');	
		}

  执行结果:

test switch:
c
d
end

【2018.4.10补充语义说明与图解】

  其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

  图解:

 

————————————————————————————————————————————————————————————————

关于switch语句提前说明几点:

switch语句后面跟的 表达式的类型 必须是整型或可以转换为整型的表达式或类型:

  1.    可以放一个整型的变量 :int num = 10;  switch (num)
  2.     可以放一个整形常量:switch (10)
  3.     可以放一个返回值是整型的表达式: switch (5+5),num = 5+5
  4.     还可以放可以转换为int类型的表达式:switch ('a')   case 97

关于case  使用注意事项
case语句可以有多个

  1. case语句格式: case  常量表达式: (空格和冒号不能省)
  2.   可以是常量  case 10:
  3.   如果放表达式,那么只可以是常量表达式 case 5+5:
  4.   default语句的位置可以任意放
  5.   case的穿透问题,同样适用于 default
  6.   如果default语句放到 switch语句的最后,可以不加break
  7.   如果不是放到最后,是必须加上break的
  8.   case 后面不能是实数  (单精度,双精度都不可以)
  9.   case 语句之后,默认的第一句话不能定义变量
  10.   如果第一句话非要定义,应该加上大括号

以上内容参考http://blog.csdn.net/u013977285/article/details/47453159?locationNum=1&fps=1

转载于:https://www.cnblogs.com/aibeibei-beauty/p/8082952.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值