三目运算符 <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果. 例: int a=2; int c=3; int b=(a>c)?2:3; 输出b; 这样的结果是b为3 eg: int a=1,b=2,z; z=a>b?a:(a>b?a:b); cout<<"z:"<<z<<endl; 这样输出的结果是:2 eg: int a=1,b=2,z; z=a>b?a:a>b?a:b;//去了括号 cout<<"z:"<<z<<endl; 这样的输出的结果是:2 三目运算中执行方向依次为自右向左。 在PHP中运用实例如下: $ps= $us ? md5($_POST[password].ALL_PS)== $row[password] : FALSE;
首先从原理上来阐述这个问题: switch(表达式) { case 常量表达式1:语句1; .... case 常量表达式2:语句2; default:语句; } 1.default就是如果没有符合的case就执行它,default并不是必须的. 2.case后的语句可以不用大括号. 3.switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型. 4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
原理归原理,下面是几个容易混淆的例子.
1.标准型(case后面都有break语句) int i=3; switch(i) { case 1: System.out.println(1); break; case 2: System.out.println(2); break; case 3: System.out.println(3); break; default: System.out.println("default"); break; } 输出结果: 3 2.特殊型1(不是完全有break语句,可以完成一些特殊应用) int year=2005; int month=3; int day; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 2: day=28; break; case 4: case 6: case 9: case 11: day=30; break; } 这里 day=31; 3.特殊型2(default的位置) int i=1; switch(i) { case 1: System.out.println(1); default: System.out.println("default"); case 2: System.out.println(2); break; case 3: System.out.println(3); break; } 输出结果: 1 default 2