这是个有三个操作数的分两部分的运算符。有三个操作数的运算符就称为三元运算符。下面是一个得到一个数的绝对值的例子:
x = (y<0) ? -y : y ;
在等号和分号之间就是条件表达式。以if else的语法可以这样写:
if (y<0)
x = -y;
else
x = y;
下面是条件表达式的一般形式:
expression1 ? expression2 : expression3
如果1为真,整个条件表达式的值和2的值相同。如果1为假,整个条件表达式的值等于3的值。
当希望将两个可能的值中的一个赋给变量时,可以使用条件表达式。典型的例子是将两个值中的最大值赋给变量:
max = (a>b) ? a : b;
如果a>b,那么max的值等于a,否则等于b。
一个喷漆程序的例子:
这个程序计算向给定的平方英尺的面积涂漆,全部涂完需要多少罐油漆。基本的数学法则很简单:用平方英尺数除以每罐能涂抹的平方英尺数。但是假设结果是1.7罐会怎么样?商店整罐卖漆,而不拆开卖,所以必须买两罐。所以程序在得到非整数罐的结果时应该进1。条件运算符常用于处理这种情况,而且在适当的时候也用来打印can或cans。
#include <stdio.h>
#define COVERAGE 200 // 每罐漆可喷的平方英尺数
int main(void)
{
int sq_feet;
int cans;
printf("Enter number of square feet to be painted: \n");
while(scanf("%d",&sq_feet)==1)
{
cans = sq_feet / COVERAGE;
cans += ((sq_feet % COVERAGE == 0)? 0 : 1);
printf("You need %d %s of paint.\n",cans,
cans==1?"can":"cans");
printf("Enter next value (q to quit): \n");
}
return 0;
}
上例表明,条件运算符也可以使用字符串作为它的第二个和第三个操作数。