条件运算符

王朝百科·作者佚名  2010-09-06  
宽屏版  字体: |||超大  

C语言条件运算符该运算符是 ? :表达式为:表达式1?表达式2:表达式3

先求解表达式1,

若其值为真(非0)则将表达式2的值作为整个表达式的取值,

否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

例如:

max=(a>b)?a:b

就是将a和b二者中较大的一个赋给max。优先级条件运算符优先级高于赋值、逗号运算符,低于其他运算符

例如:

⑴ m<n ? x : a+3

等价于:(m<n) ?(x) :(a+3)

⑵ a++>=10 && b-->20 ? a : b

等价于:(a++>=10 && b-->20) ? a : b

⑶ x=3+a>5 ? 100 : 200

等价于:x= (( 3+a>5 ) ? 100 : 200 )结合性条件运算符具有右结合性

当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。

例如:

w<x ? x+w : x<y ? x : y

与 w<x ? x+w : ( x<y ? x : y) 等价

与 (w<x ? x+w : x<y) ? x : y 不等价

JAVA语言条件运算符形式:关系表达式 ? 表达式1 : 表达式2求值规则:求解关系表达式,根据关系表达式的布尔值决定取值:关系表达式的值为true时取表达式1的值;关系表达式的值为false时取表达式2的值。说明:1、条件运算符的优先级低于关系运算符和算术运算符,高于赋值运算符。

2、JAVA中条件运算表达式中的关系表达式值的类型必须为布尔类型,只能是true或false。

3、结合性也是右结合性。

4、与C语言不同的是,JAVA中条件表达式的值必须参与运算。

public class demo {

public static void main(String[]args){

int a=10,b=20,y;

a>b?(y=a):(y=b;) //1,这样写是错误的

y=a>b?a:b; //2,这样写是正确的

y=a<b?b:b<c?a:c; //3,这样写是正确的

}

}

以上程序中,1处错误是由于条件表达式的值没有参与运算,不能构成语句。3处(b<c?a:c)先结合,再将这个值参与到另一个条件运算中去,是合法的,这也说明了条件运算符的右结合性。条件运算符的妙用:——用条件表达式判断输出单词的单复数。

程序示例:ChooseDemo05.java

public class ChooseDemo05 {

public static void main(String[]args){

int apples=1; //苹果的个数

System.out.println("I have "+apples+" apple"+(apples==1?".":"s."));

}

}

程序中会自动根据apples的个数来输出单词的单数或复数。

当然,还有其他的应用:

1、 在某些地方使用“他”还是“她”。

2、日期输出时决定使用后缀“st”、“nd”等。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有