C语言条件表达式

发布网友 发布时间:2022-04-22 06:19

我来回答

2个回答

热心网友 时间:2022-06-18 20:33

由条件运算符及其相应的操作数构成的表达式称为条件表达式。

条件表达式的一般形式:表达式1?表达式2:表达式3

含义:若条件表达式1的值非0,则该条件表达式的值是表达式2的值,否则是表达式3的值。

例如:

1、max=((a>b)?a:b)

就是将a和b二者中较大的一个赋给max。

2、min=(a<b)?a:b

就是将a和b二者中较小的一个赋给min。

扩展资料

条件表达式的优先级

条件运算符优先级高于赋值、逗号运算符,低于其他运算符

例如: int m=5,n=10,a=1,b=3

(1) m<n ? X: a+3

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

(2) a++>=10 && b-->20 ? a : b

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

(3) x=((3+a>5 )? 100 : 200)

等价于:x=((3+a>5)?100:200)

热心网友 时间:2022-06-18 20:34

执行到那一句才有相应的效果,问号表达式可以改写成if-else:

x = a > b ? i++ : i++;

等同于:

if(a > b)
x = i++;
else
x = i++;

所以最后x等于3,i自增了一次等于4。

为什么一定要去研究那些没用的旮旯呢,我从来不记什么结合方向和运算符优先级别,对于问号表达式,我只知道:

x = a > b ? i++ : i--;

如果a > b,那么x = i++,否则x = i--,而整个表达式取了哪一个i的值,那个i的相关副作用运算(如果有的话,比如自增自减)才发生作用。如果你实在想不透就把它改写成上面那样的if-else语句,一目了然,没必要学孔已己样咬文嚼字在那些拐角旮旯里浪费时间。

BTW:你们的考试考运算符结合方向?天......

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com