假设你要去市场,你的室友告诉你:“如果草莓在打折,就买一些。” 这是一个条件语句,意思是:你只会在某个条件为真时(“草莓在打折”)执行某个动作(“买一些”)。
这类条件在编程中非常常见,它们使我们可以在程序中实现有条件的行为。C++ 中最简单的条件语句叫作 if
语句。if
语句允许我们仅在某个条件为真时执行一行或多行代码。
if语句的基本语法
最简单的 if
语句格式如下:
if (condition) true_statement;
为了可读性,通常写成如下形式:
if (condition)
true_statement;
其中 condition
(条件)是一个会被计算为布尔值的表达式。
- 如果
condition
的结果为true
,则执行true_statement
; - 如果结果为
false
,则跳过该语句。
if语句实例演示
#include <iostream>
int main()
{
std::cout << "Enter an integer: ";
int x {};
std::cin >> x;
if (x == 0)
std::cout << "The value is zero\n";
return 0;
}
运行结果(示例):
Enter an integer: 0
The value is zero
说明:
- 用户输入一个整数;
- 条件
x == 0
被计算; - 若结果为
true
,打印对应信息。
再看另一次运行:
Enter an integer: 5
因为条件为假,所以不会输出任何信息。
⚠️ 注意:
if
语句默认只控制它后面的一条语句。如果需要控制多条语句,参见第 8.2 课《If statements and blocks》。
if-else结构详解
想要处理"非零"的情况,代码可能写成这样:
if (x == 0)
std::cout << "The value is zero\n";
if (x != 0)
std::cout << "The value is non-zero\n";
或这样:
bool zero { (x == 0) };
if (zero)
std::cout << "The value is zero\n";
if (!zero)
std::cout << "The value is non-zero\n";
更简洁的方式是使用 if-else
:
if (x == 0)
std::cout << "The value is zero\n";
else
std::cout << "The value is non-zero\n";
运行示例:
Enter an integer: 0
The value is zero
Enter an integer: 5
The value is non-zero
链式if语句的使用
有时我们要依次判断多个条件,可以使用 else if
结构:
if (x > 0)
std::cout << "The value is positive\n";
else if (x < 0)
std::cout << "The value is negative\n";
else
std::cout << "The value is zero\n";
运行示例:
Enter an integer: 4
The value is positive
Enter an integer: -3
The value is negative
Enter an integer: 0
The value is zero
布尔函数与if语句的结合
回顾我们上一课写过的函数:
bool isEqual(int x, int y)
{
return x == y;
}
我们可以使用 if
让输出更人性化:
if (isEqual(x, y))
std::cout << x << " and " << y << " are equal\n";
else
std::cout << x << " and " << y << " are not equal\n";
运行示例:
Enter an integer: 5
Enter another integer: 5
5 and 5 are equal
Enter an integer: 6
Enter another integer: 4
6 and 4 are not equal
非布尔条件的处理
如果条件表达式不是布尔值,会发生什么? 答:它会被转换成布尔值。
- 非零数值 →
true
- 0 →
false
示例:
int x { 4 };
if (x)
std::cout << "hi\n";
else
std::cout << "bye\n";
输出:
hi
💡 关键理解:
if (x)
的含义是:“如果 x 非零/非空”。
提前返回技术
提前返回 指函数中在末尾前就使用 return
返回值。
示例(无意义的提前返回):
void print()
{
std::cout << "A\n";
return;
std::cout << "B\n"; // 永远不会执行
}
但配合 if
,提前返回可以提高函数的清晰度:
int abs(int x)
{
if (x < 0)
return -x;
return x;
}
示例输出:
std::cout << abs(4); // 4
std::cout << abs(-3); // 3
📝 小历史:过去程序员不太提倡提前返回;现代编程中,为了简洁和错误处理,适当使用是推荐的。
练习题
问题1
什么是提前返回?它的行为是什么?
问题2
编写一个程序,要求用户输入一个 0 到 9 之间的整数。如果是质数(2, 3, 5, 7),打印"The digit is prime",否则打印"The digit is not prime"。
问题3
以下代码如何在不改变格式的情况下简化?
bool isAllowedToTakeFunRide()
{
std::cout << "How tall are you? (cm)\n";
double height{};
std::cin >> height;
if (height >= 140.0)
return true;
else
return false;
}
如果你还想让我翻译后面的练习解答或延续的内容,也欢迎继续发我。