(后有该用法的总结,不想看我根据测试推导用法的朋友们可以直接看总结)
(该用法我在书中没找到,网上看到的介绍寥寥无几且都为粗糙,将该段作用写作博客分享给大家)
在课上老师讲过switch是作用于整数的语句。但是我曾在贴吧里见过用switch选择“范围”的用法,而该用法我从未在程序设计基础一书中找到,故想分享给大家。
如下代码1:
switch (a){
case 1 ... 3:printf("a在[1,3]内");
break;
default:
printf("a不在[1,3]内");
}
同学们可以试试这段语句,试过可以发现当整数型变量a在输入为[1,3]内时输出没有任何问题,我询问老师的时候老师告诉我case后只能接一个常量,然鹅[1,3]可以说是一个变量,那么这个语句的成功输出是代表着老师的错误吗?
但是当我换个思路想这个问题时做了个推断,如果这个' ... '的作用不是表范围而是表示对有限的数进行省略的话一切都说的通了,而且英语中的省略号正是"..."
未省略的代码如下代码2:
switch (a){
case 1:
case 2:
case 3:printf("a在[1,3]以内")
default:printf("a不在[1,3]以内")
}
则该省略号不仅使代码变整洁了,而且在enum中也有妙用。
总结:在switch中一段为了达到省略某一段连续的整数但指令相同情况可以用 case a ... b:statement;break;语句进行操作
ps:同学们可以参考该代码1,2的对比进行理解,并且"..."的意思是省略若干个连续的整数,而绝非范围的意思。