C Primer Plus 第7章 C控制语句:分支和跳转 7.5 条件运算符 ? :

原创
2016/06/18 07:52
阅读数 148

这是个有三个操作数的分两部分的运算符。有三个操作数的运算符就称为三元运算符。下面是一个得到一个数的绝对值的例子:

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;
}

上例表明,条件运算符也可以使用字符串作为它的第二个和第三个操作数。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部