1、switch(x) { default: if(prime(x)) { case 2: case 3: case 5: case 7: process_prime(x); } else { case 4: case 6: case 8: case 9: case 10: process_composite(x); } } 你能说出它如何执行吗? switch语句的格式为: switch(条件)语句 其中,条件的类型可以是整数类型,枚举类型,或者类类型(但该类需要有单一的转换到整数类型或(可以是字符类型,但不能是浮点类型、字符串、指针类型等),语句部分不一定非得是一条复合语句。
(资料图)
2、因此,switch("123"[2]+(int)3.1);是条合法的switch语句,switch(j)case 5:i++;也是条合法的switch语句。
3、如果switch的语句部分是一条非复合语句,则其内定义的变量作用域,效果上等同于该条语句加上了{}。
4、如int i=3;switch(i)int i=4;,相当于int i=3;switch(i){int i=4;},因此这并不会导致同一局部域下的重复定义错误。
5、 case标号后为一个整数类型的常量表达式,因此int i=3;switch(i){case 3:;}合法,而int i=3;switch(3){case i:;}不合法,因为case i:的i不是个静态表达式。
6、如果将int i=3;换成const int i=3;则后者在C++中就合法了,但在C中仍然不合法。
7、原因是C和C++对const的处理不同,在C中,const限定的量是不能直接去修改的,但它本身并不是常量表达式;在C++中,const限定的量,如果其值能在编译时确定,则其可出现在必须使用常量表达式之处。
8、 同一个switch的各个case标号的值不能够相互重复。
9、要注意的是,case标号在实现中是有上限的:C89标准要求至少257个,这保证了ASCII被switch列举一遍。
10、 虽然要求case标号是常量表达式,看起来似乎不是很零活方便(比如对比VB的Select Case),但是这样的设计可以保证更高的效率,而效率则是C和C++最为看重的因素。
11、因为case标号的值是编译时可确定的整数类型,又因为其不可有重复,因此编译器可以进行优化。
12、 最后要强调的问题是,C++中goto不能从前往后跳过变量定义,因此switch内出现的变量定义语句,最好放在复合语句{}中包起来。
本文分享完毕,希望对大家有所帮助。
-
1怎么打开电脑路由器设置?初次设置无线路由器方法是什么?
-
2路由器如何设置提升网速?学校寝室路由器无线怎么设置的?
-
3电脑没连路由器却能进入路由器界面?电脑无法进入路由器?
-
4把电脑变成无线路由器怎么弄?台式电脑如何变成无线路由器?
-
5重新启用U盘的技巧有什么?U盘提速的技巧有哪些?
-
6如何安全的使用U盘?U盘日常使用的技巧有哪些?
-
7曲面显示器怎么选择?曲面显示器和平面显示器的区别有什么?
-
8安卓设备型号和名称可以改吗?安卓手机如何修改手机IMEI串号?
-
9地址和域名是什么关系?互联网域名是商标的一个组成部分对错?
-
10Linux获取文件名称和文件路径并写入txt?linux下exports文件是什么?