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

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

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

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

转载于:https://my.oschina.net/idreamo/blog/693721

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值