C语言?:条件运算符的用法(附带实例)
首先来用 if 语句实现对两个数中最大值的求解,代码如下:
条件运算符的一般形式如下:
例如,代码“max=(a>b)?a:b;”中,首先判断表达式 a>b 是否成立,成立则说明结果为真,否则为假。当为真时,将 a 的值赋给 max 变量;如果为假,则将 b 的值赋给 max 变量。
【实例】计算出租车的收费情况。出租车行驶时,路径不足 3 千米,收取起步价 6 元;路程如果超过 3 千米,则会在起步价金额上加上超出部分的费用(按每千米 2 元收费)。使用条件运算符进行判断选择,具体代码如下:
2) 根据提示信息,用户输入行驶公里数数据。假设用户输入 12,表示公里数超过 3。接下来使用条件运算符判断表达式 jour<3 是否成立,成立时为真,将“?”号后的值 6 赋给 fee 变量;否则将“6+(jour-3)*2”的值赋给 fee 变量。因为 jour<3 表达式不成立,所以 fee 的值为 24。
运行程序,结果为:
if (a > b) { max = a; } else { max = b; }上面的代码可以用条件运算符“? :”来简化:
max=(a>b)?a:b;条件运算符可对一个表达式中值的真假情况进行检验,然后根据检验结果返回另外两个表达式中的一个。
条件运算符的一般形式如下:
表达式1?表达式2:表达式3;在运算中,首先对第一个表达式的值进行检验。如果值为真,则返回第二个表达式的结果值;如果值为假,则返回第三个表达式的结果值。
例如,代码“max=(a>b)?a:b;”中,首先判断表达式 a>b 是否成立,成立则说明结果为真,否则为假。当为真时,将 a 的值赋给 max 变量;如果为假,则将 b 的值赋给 max 变量。
【实例】计算出租车的收费情况。出租车行驶时,路径不足 3 千米,收取起步价 6 元;路程如果超过 3 千米,则会在起步价金额上加上超出部分的费用(按每千米 2 元收费)。使用条件运算符进行判断选择,具体代码如下:
#include <stdio.h> /*包含头文件*/ int main() /*主函数 main*/ { int jour, fee; /*定义变量 jour 表示行驶路程,fee 表示车费*/ printf("请输入出租车走的公里数:\n"); /*提示输入出租车行驶的路程*/ scanf("%d", &jour); /*输入公里数*/ fee = (jour < 3) ? 6 : 6 + (jour - 3) * 2; /*利用条件运算符计算费用*/ printf("所花的费用是 %d 元\n", fee); /*输出所花的费用*/ return 0; /*程序结束*/ }1) 定义变量 jour 表示公里数,fee 表示所花费用。
2) 根据提示信息,用户输入行驶公里数数据。假设用户输入 12,表示公里数超过 3。接下来使用条件运算符判断表达式 jour<3 是否成立,成立时为真,将“?”号后的值 6 赋给 fee 变量;否则将“6+(jour-3)*2”的值赋给 fee 变量。因为 jour<3 表达式不成立,所以 fee 的值为 24。
运行程序,结果为:
请输入出租车走的公里数:
12
所花的费用是 24 元