switch只能测试是否相等,不能测试关系或逻辑表达式。怎么理解?
下面的程序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
a=2;b=7;c=5;
switch(a>0)
{
case 1:switch(b<10)
{
case 1:printf("@"); break;
case 0:printf("!"); break;
}
case 0:switch(c==5)
{
case 0:printf("*"); break;
case 1:printf("#"); break;
default:printf("%"); break;
}
default:printf("&");
}
printf("\n");
system("PAUSE");
return 0;
}
其中a>0,b<0不就是测试关系吗?
case 1,case0是否表示逻辑判断?如果是,那switch不就是能够测试逻辑表达式么?
switch只能测试是否相等,不能测试关系或逻辑表达式。应该怎么理解?
其中a>0,b<10不就是测试关系吗?之前打错了
先计算并获得switch后面小括号里的表达式或变量值,然后将计算结果顺序与每个case后的常量比较。
当二者相等时,执行个case块中的代码,当遇到break时,就跳出switch选择结构,执行switch选择结构之后的代码。
如果任何一个case之后的常量与switch后的小括号中的值相等,则执行switch尾部的default块中代码。
在C语言中,switch语句是开关语句,一般与case、break、default配合使用,对流程进行控制。
switch ( 变量表达式 ),C规定:如果case或default语句结束后没有break,则继续执行下面的语句,直到遇到break语句才跳出switch。
当常量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句并跳出switch语句。
遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
switch()的参数类型不能为实型 。
case标签必须是常量表达式(constantExpression),如42或者'4'。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
本回答被网友采纳Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以C语言来说,switch(开关语句)常和case break default一起使用。
Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。
直线翻译:switch语句,即“切换”语句;case即“情况”。
switch语句的语法如下(switch,case,break和default是关键字):
switch ( 变量表达式 )
{
case 常量1 :语句;break;
case 常量2 :语句;break;
case 常量3 :语句;break;
...
case 常量n:语句;break;
default :语句;break;
}
switch语句注意事项:
switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。
break语句是必须有的,它用来结束switch语句的执行。如果所有case语句后面的表达式都不等于switch语句的表达式expr1的值川0执行default后面的默认语句序列。不过,default部分是可选的。如果没有这一部分,并遇到所有case语句都不匹配,那么,就不作任何处理而进入后续程序段的执行。
可见,一个switch语句可以代替多个if-else语句组成的分支结构,而switch语句从思路上显得更清晰。
使用switch语句时,要注意expr1必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,//(也不能为一个字符串)。 (jdk7后,允许String)
本回答被网友采纳