C语言三目运算符问题

Python015

C语言三目运算符问题,第1张

三目运算符为a?b:c即有三个参与运算的量。由条件运算符组成条件表达式的一般形式为:

表达式1?

表达式2:

表达式3

其求值规则为:如果表达式1的值为真,则以表达式2

的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。

条件表达式通常用于赋值语句之中。

例如条件语句:

if(a>b)

max=a

else

max=b

可用条件表达式写为

max=(a>b)?a:b

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b

赋予max。

使用条件表达式时,还应注意以下几点:

1.

条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此

max=(a>b)?a:b可以去掉括号而写为

max=a>b?a:b

2.

条件运算符?和:是一对运算符,不能分开单独使用。

3.

条件运算符的结合方向是自右至左。

例如:

a>b?a:c>d?c:d应理解为

a>b?a:(c>d?c:d)

这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条

件表达式。

void

main(){

int

a,b,max

printf("\n

input

two

numbers:

")

scanf("%d%d",&a,&b)

printf("max=%d",a>b?a:b)

三目运算符是具有三个操作数的运算符,例如:

m=a>b?c:d

如果a>b成立则:m=c

如果a>b不成立则:m=d

程序例子:

#include <stdio.h>

void main()

{

 int m , a = 1, b= 2, c = 3, d = 5

 m = a > b ? c : d

 printf ("m = %d\n", m) //输出结果一定是5

}