7.5 条件运算符:?:
C提供条件运算符(conditional expression)作为表达if else语句的一种便捷方式,该表达式使用?:条件运算符。该运算符分为两部分,需要3个运算对象。条件运算符是C语言中唯一的三元运算符。
x = (y < 0) ? -y : y; //条件运算符
用if else可以这样表达:
if( y < 0 ){
x = -y;
} else{
x = y;
}
条件表达式的通用形式如下:
expression1 ? expression2 : expression3
如果expression1为真(非0),那么整个条件表达式的值与expression2的值相同;如果expression1为假(0),那么整个条件表达式的值与expression3的值相同。
需要把两个值的一个赋给变脸时,就可以用条件表达式。
通常,条件运算符完成的任务用if else语句也可以完成。但是,使用条件运算符的代码更简洁,而且编译器可以生成更紧凑的程序代码。
油漆程序
/* paint.c -- uses conditional operator */
#include <stdio.h>
#define COVERAGE 350 // square feet per paint can
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;
}
/* 输出:
*/
整数除法的计算结果会被截断。