三目运算符优先级仅高于赋值运算符

?:

语法:

条表 ? 表 1 :表 2

运算规则:

根据条表的运算规则结果:若条表运算结果为真,则以表1的运算结果为表达式的结果,否则用表2的结果为表达式的结果

char sex;

scanf("%c", &sex);

printf(sex == 'm' ? "先生\n":"女士\n");

一行找到最大值:采用分而治之的原则

int a, b, c, d;

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

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

将a,b,c,d中最大数赋值给d:

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

x - y ? 3 : -3//若 x == y 则为假,不成立,则x - y的值为 -3

要求写出判断X不能被3整除且不能被7整除的条表:

x%3 && x%7

滞后自增在条表中的特殊表现:

C语言对于滞后自增在条表中的处理是先用没有自增前的数字参加判断,然后立刻自增,然后参加其他运算

例如:

int i = 1, j;

j = i-- ? i*2 : i+10;

printf("%d %d\n", i, j);

输出的值为 0 0

解释:先用1进行判断,发现是真,则i*2是表达式的值,执行i*2之前i--得到i=0,则表达式的值为0;