在 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语句把多个if语句串联起来。
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
从 C++17 开始,if语句还可以包含一个简短的初始化语句,用来为该if语句初始化一个或多个变量。
例如:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
注意:在初始化语句中创建的变量,在
if语句结束后就无法访问了。
在本练习中,你将编写一些代码,为购买车辆做准备。
你有三个任务:判断自己是否需要驾驶证,在两种车辆之间做出选择,以及估算一辆二手车的合理价格。
有些类型的车辆需要驾驶证才能驾驶。
假设只有 "car" 和 "truck" 这两种类型需要驾驶证,其他类型无需驾驶证即可驾驶。
实现 needs_license(kind) 函数,它接收车辆类型(字符串),返回一个布尔值,表示这种类型的车辆是否需要驾驶证。
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
你评估了可选的车辆。
你成功把范围缩小到两种选择,但需要有人帮你做最终决定。
为此,实现 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 年,价格为全新时原价的 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。