c语言中?:的应用

条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。

	表达式1 ? 表达式2 : 表达式3

若表达式1的结果为真,则此时表达式2的值就是整个条件表达式的值;反之,若表达式1的结果为假,那么表达式3的值就是整个表达式的值。

例如,假定产品的单价是 3.5,提供 3 个级别的折扣:数量超过 50,折扣为 15%;数量超过 20,折扣为 10%;数量超过 10,折扣为 5%。下面是代码。

#include<stdio.h>
int main(){
    double unit_price = 3.5;
    double discount1 = 0.05;
    double discount2 = 0.1;
    double discount3 = 0.15;
    double total_price = 0.0;
    int quantity = 0;

    printf("Enter the number that you want to buy:");
    scanf("%d",&quantity);

    total_price=quantity*unit_price*(1.0-
        (quantity>50?discount3:(
            quantity>20?discount2:(
                quantity>10?discount1:0.0))));

    printf("The price for %d is %7.2f\n",quantity,total_price);
    return 0;
}

运行结果:

程序分析

比较有趣的是根据输入的数量计算产品的总价的语句。该语句包含额三个条件运算符,所以有点难以理解:

total_price = quantity*unit_price*(1.0-
                   (quantity>50?discount3:(
                       quantity>20?discount2:(
                            quantity>10?discount1:0.0))));

把它分解为各个部分,就容易理解它是如何得出正确结果的。

总价是用表达式 quantity*unit_price 计算出来的,它只是将单价乘以订购数量。其数量必须乘以由数量决定的折扣因子

  • 如果数量超过 50,总价必须乘以 (1.0-discount3),这用下面的表达式 (1.0-quantity>50?discount3:something_else)
  • 如果 quantity>50 表达式就乘以 (1.0-discount3),完成赋值运算符右边的运算
  • 否则,表达式乘以 (1.0-something_else),其中 something_else 是另一个条件运算符的结果。
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值