很多朋友对于条件运算符的运算规则和条件表达式a关于C语言条件运算符的结合顺序
1.第一优先级数组下标[],圆括号(),成员选择(对象).,成员选择(指针)->
2.第二优先级负号运算符-,强制类型转换,自增运算符++,自减运算符--,取值运算符,,取地址运算符&,逻辑非运算符!,按位取反运算符~,长度运算sizeof符
3.第三优选级除/,乘*,余数%,结合方向为左到右
4.第四优选级,加+,减-,结合方向为左到右
5.第五优选级,左移<<,右移>>,结合方向为左到右
条件运算符的嵌套
条件运算符的语法为:
(条件表达式)?(条件为真时的表达式):(条件为假时的表达式)
例如:
x=a
条件运算符构成一个表达式。它是C++中唯一一个3元运算符,它们之间用“?”和“:”隔开。上例中,把a和b中较小的值赋给x。该例是if...else语句的一个替代:
if(a
x=a;
else
x=b;
条件运算符构成表达式,它是有值的。而if..else语句不能有值,所以if..else语句不能替代条件运算符。例如,下面的代码不能由if..else替代:
cout
输出语句要打印一个值,该值是a与b的较小值。由于
条件运算符表达式的值与测试值没有直接的关系。例如:
cout
该输出语句中,条件运算符表达式的条件若成立,取值为“file”,否则,取值为“files”。其中,条件为两个整型数的比较,而表达式的值为字符串。
条件运算符可以嵌套。例如:
x>y?"greaterthan":x==y?"equalto":"lessthan"
它等价于:
(x>y)?"greaterthan":((x==y)?"equalto":"lessthan")
当x>y时,值为"greaterthan",x==y时,值为"equalto",否则,值为"lessthan"。条件运算符的嵌套可读性不够好。
在一个条件运算符的表达式中,如果后面两个表达式的值类型相同,均为左值,则该条件运算符表达式的值为左值表达式。例如:
intx=5;
longa,b;
(x?a:b)=1;//ok:因为a和b都是左值
(x?x:a)=2;//error:x和a不同类型。编译器将其解释为(1ong)x和a
(x==271:a)=3;//error:1非左值
"(x?a:b)=1"表示当x为0时,b=1,否则a=1。这里的括号是必须的,否则将被看作x?a:(b=1)。"(x?x:a)=2”中,尽管x是左值,a也是左值,但x与a不同类型,条件运算符要对其进行操作数的隐式转换,使之成为相同的类型。任何被转换的变量都不是左值。
->在C中,条件运算符是不能作左值的,所以"(x?a:b)=1;"将通不过编译。
c语言怎么用条件运算符求最大值
C语言中可以采用三元条件运算符完成两个变量最大值的求解。
三元条件运算符的定义如下:表达式?表达式为真时语句:表达式为假时语句。
例如:
intmax=0;
a>=b?max=a:max=b;
if多个条件使用方法
if多个条件使用的方法是在多条件之间用and运算符还是用or运算符进行连接的,多个条件之间肯定是需要一个连接符的无论是与运算的连接还是或运算的连接都是可以的,与运算表示只有当所有的条件都为真的时候才是真的,或运算只要有一个条件为真那么都是可以执行的。
条件运算符是什么
条件运算符也称为三元运算符。该运算符由三个操作数组成,用于评估布尔表达式。操作者的目标是决定;应将哪个值分配给变量。
条件运算符优先级高于赋值、逗号运算符,低于其他运算符。
条件运算符是什么
运算符
表达式为:表达式1?表达式2:表达式3
先求解表达式1,
若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
例如:
1、max=(a》b)?a:b
就是将a和b二者中较大的一个赋给max。
2、min=(a《b)?a:b
就是将a和b二者中较小的一个赋给min。
优先级
条件运算符优先级高于赋值、逗号运算符,低于其他运算符
例如:
⑴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中条件表达式的值必须参与运算。运算符妙用:
——用条件表达式判断输出单词的单复数。
程序示例:ChooseDemo05.java
程序中会自动根据apples的个数来输出单词的单数或复数。
当然,还有其他的应用:
1、在某些地方使用“他”还是“她”。
2、日期输出时决定使用后缀“st”、“nd”等。
好了,文章到此结束,希望可以帮助到大家。