简介
比较运算
C++ 可以使用比较运算符比较不同的值。
| 比较含义 | 运算符 |
|---|---|
| 等于 | == |
| 不等于 | != |
| 小于 | < |
| 小于或等于 | <= |
| 大于 | > |
| 大于或等于 | >= |
比较结果始终是布尔值:
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
== 和 != 分别检查两个值是否相等、是否不相等。下面是几个常见示例:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
其余运算符分别检查一个值是否大于 >、大于或等于 >=、小于 <、小于或等于 <= 另一个值。数值和字符串都可以进行这些比较。比较字符串时,使用字典序,也称为词典顺序。
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
if 语句
C++ 的条件判断与其他语言类似。条件判断最终使用 bool 类型,其值是 true 或 false。条件判断常用于控制程序流程,以检查不同条件。
可以使用 if 语句,在条件为 true 时执行其中的代码:
std::string value{"val"};
if (value == "val") {
return "was val";
}
如果需要处理多种情况,可以使用 else if 和 else,把多个分支连接起来。
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
从 C++17 开始,if 语句还可以包含一条简短的初始化语句,为本次条件判断初始化一个或多个变量。例如:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
注意:初始化语句中创建的变量,不能在整个
if语句结束后访问。
任务说明
本练习需要编写代码,为购买车辆做准备。
你需要完成三个任务:判断是否需要驾驶执照、帮助你在两辆车之间选择,以及估算二手车的合理价格。
1. 判断是否需要驾驶执照
某些类型的车辆需要驾驶执照。假设只有 "car" 和 "truck" 需要执照,其他类型都不需要。
实现 needs_license(kind) 函数,接收表示车辆类型的字符串,返回布尔值,说明驾驶该类型车辆是否需要执照。
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
2. 在两辆候选车辆之间选择
你考察了可选车辆,并把范围缩小到两个选项,但还需要帮助才能作出最终决定。实现 choose_vehicle(option1, option2) 函数,接收两辆车的名称,选择字典序在前的选项并返回推荐语句。
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
返回字符串的格式必须为 "<CHOSEN_VEHICLE> is clearly the better choice.",其中 <CHOSEN_VEHICLE> 是从两个参数中选出的名称。
3. 估算二手车价格
作出选择后,你希望确保经销商的报价合理。二手车价格取决于车龄。粗略估算时,车龄不足 3 年,价格为新车原价的 80%;车龄至少 10 年,价格为原价的 50%;车龄至少 3 年但不足 10 年,价格为原价的 70%。
实现 calculate_resell_price(original_price, age) 函数,使用 if、else if 和 else 实现上述规则;也可以尝试其他写法。函数接收原价和车龄,返回经销商处的估计价格。
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
注意:返回值的类型是
double。