C/C++中的switch case 语句是怎样的一个执行过程
你理解的是正确的,switch case语句完全可以用if else语句来替换掉;但是当比较较多 或者很多其他控制流程的时候,switch语句 的可读性比if else语句高的多;另外注意的就是 一般情况下每一个case 之后都要跟一个break; 其目的是为了跳出switch语句块去执行switch后边的语句;但是实际项目中多出现这种情况
switch(i)
{
case 1:
case 3:
case 5:
……; //这里当i等于 1 3 5 时都会执行
break;//直到这里退出
case 2:
(1)……;
case 4:
(2)……;
case 6:
(3)……;//这里i 等于2时会执行(1)(2)(3); i 等于4时会执行(2)(3); 等于6时只会执行(3)
break;
case 9:
break;
default:
break;
}
类似于上边的这种逻辑 如果用if else语句控制起来就会很麻烦,且可读性太差,而用switch语句就更加简洁直观,可读性也更强
switch case语句 怎么执行
每行标行号,好说一点
1void main ( )
2 {
3 int x = 1, y = 0, a = 0, b =0;
4 switch ( x )
5 {
6 case 1: switch ( y )
7 {
8 case 0: a++; break;
9 case 1: b++; break;
10 }
11 case 2: a++; b++; break;
12 case 3: a++; b++;
13 }
14 printf (“na = %d, b = %d”, a,b);
15 }先switch x
x是1
走6行的case 1
执行6行的switch y
y=0
执行8行的case 0
于是a++ a值为1
退出6行的switch
注意6的case 1没有break
所以继续执行11行的case 2
a++ b++
这时a = 2 ;b = 1
这回有break了
退出4的switch
执行14行的输出
于是输出
a=2, b=1
switch case语句总执行第一个case
你的代码逻辑是错误的,从你现在的代码逻辑只能猜出你是想实现根据下拉菜单不同的选择后自动跳转到相应的页面,如果是这样的话那么你的这个for循环就是完全没有必要的!
本身选的这个DropDownList控件的SelectIndexChanged事件就已经能够知道现在选择的是哪个下拉列表项的Index索引值,
然后直接case当前下拉列表的SelectIndex值就行了
也就是
switch()
{
case 1:
*ct(“*”);
break;
case 2:
*ct(“*”);
break;
case 3:
*ct(“*”);
。。..
}
关于switch语句,case和default的执行顺序,
先执行case,当所有的case都判断完不符合条件的时候,才会执行default,无论你的default放在哪,第一行,最后,或者中间位置。
default是缺省默认的意思,default在switch语句中不管放在哪都是从第一个case开始执行,当所有的case都不满足条件时,才执行default。
需要注意的是,default在最后一行时下面的break可以省略不写,但如果没有在最后一行default下面需要加上break,否则执行完default后会继续执行下面的代码直到遇到break跳出循环。