C++ if...else
在本文中,我们通过几个示例讨论了 C++ 中的 if…else 语句。
在计算机编程中,我们经常需要在满足特定条件时来运行某些代码。
例如,根据学生获得的分数分配成绩(A、B、C)。
- 如果百分比高于 90,则指定为 A 级
- 如果百分比高于 75,则指定为 B 级
- 如果百分比高于 65,则指定为 C 级
C++中有三种形式的if...else
语句。
if
语句if...else
语句if...else if...else
语句
C++ if 语句
if
语句的语法是:
if (condition) {
// 代码块
}
if
语句计算括号 ( )
内的值 condition
。
- 如果
condition
计算结果为true
,则执行if
主体内的代码。 - 如果
condition
计算结果为false
,则跳过if
主体内的代码。
注意: { }
里面的代码是 if
语句的主体。
下图说明了 if
语句的工作逻辑。
示例 1:if 语句
本程序打印用户输入的正数。如果用户输入了负数,就跳过。
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
// checks if the number is positive
if (number > 0) {
cout << "You entered a positive integer: " << number << endl;
}
cout << "This statement is always executed.";
return 0;
}
输出 1
Enter an integer: 5
You entered a positive integer: 5
This statement is always executed.
当用户输入 5
时,条件 number > 0
的结果为 true
,所以执行 if
主体内的语句。
输出 2
Enter an integer: -5
This statement is always executed.
当用户输入 -5
时,条件 number > 0
的结果为 false
,所以执行不执行 if
主体内的语句。
if…else
if
语句可以有一个可选的 else
子句。它的语法是:
if (condition) {
// 如果条件为 true,执行这里的代码
}
else {
// 如果条件为 false,执行这里的代码
}
如果 condition
评估 true
,
if
主体内的代码被执行else
主体内的代码被跳过执行
如果 condition
评估 false
,
else
主体内的代码被执行if
主体内的代码被跳过执行
下图说明了 if...else
语句的工作逻辑。
示例 2:if…else 语句
本程序检查用户输入的数字是正数还是负数。在本程序中 0 被当作正数。
// 本程序检查用户输入的数字是正数还是负数。
// 在本程序中 0 被当作正数。
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
if (number >= 0) {
cout << "You entered a positive integer: " << number << endl;
}
else {
cout << "You entered a negative integer: " << number << endl;
}
cout << "This line is always printed.";
return 0;
}
输出 1
Enter an integer: 4
You entered a positive integer: 4
This line is always printed.
在上面的程序中,我们有条件 。如果我们输入的数字大于或等于 0,则条件计算 true
。
在这里,我们输入 4
. 所以,条件 number >= 0
的计算结果是 true
。因此,执行 if
主体内的语句。
输出 2
Enter an integer: -4
You entered a positive integer: -4
This line is always printed.
在这里,我们输入 -4
. 所以,条件 number >= 0
的计算结果是 false
。因此,执行 else
主体内的语句。
if…else…else if 语句
if...else
语句用于在两个选项中执行一个代码块。但是,如果我们需要在两个以上的选项之间做出选择,我们要使用 if...else if...else
语句。
if...else if...else
语句的语法是:
if (condition1) {
// code block 1
}
else if (condition2){
// code block 2
}
else {
// code block 3
}
这里,
- 如果
condition1
计算结果为true
,则code block 1
执行 。 - 如果
condition1
计算结果为false
,则计算condition2
的值。 - 如果
condition2
计算结果为true
,则code block 2
执行。 - 如果
condition2
计算结果为false
,则code block 3
执行。
下图说明了 if...else if...else
语句的工作逻辑。
**注意:**可以有多个 else if
语句,但只能有一个 if
和 else
语句。
示例 3:if…else if…else
本程序检查用户输入的数字是正数、负数还是 0 。
#include <iostream>
using namespace std;
int main() {
int number;
cout << "Enter an integer: ";
cin >> number;
if (number > 0) {
cout << "You entered a positive integer: " << number << endl;
}
else if (number < 0) {
cout << "You entered a negative integer: " << number << endl;
}
else {
cout << "You entered 0." << endl;
}
cout << "This line is always printed.";
return 0;
}
输出 1
Enter an integer: 1
You entered a positive integer: 1
This line is always printed.
输出 2
Enter an integer: -2
You entered a negative integer: -2
This line is always printed.
输出 3
Enter an integer: 0
You entered 0.
This line is always printed.
在这个程序中,我们从用户那里获取一个数字。然后我们使用 if...else if...else
语句来检查数字是正数、负数还是零。
如果数字大于 0
,则执行 if
块内的代码。如果数字小于 0
,则执行 else if
块内的代码。否则,执行 else
块内的代码。
嵌套 if…else
有时,我们需要在一个 if
语句中使用另一个 if
语句。这称为嵌套 if
语句。
嵌套 if
它的语法是:
// 外部 if
if (condition1) {
// 一些代码
// 内部 if
if (condition2) {
// 一些代码
}
}
说明:
- 我们可以根据需要在内部
if
语句中添加else
和else if
语句。 - 内部
if
语句也可以插入到外部的else
或else if
语句中(如果存在)。 - 我们可以嵌套多层
if
语句。
示例 4:嵌套 if
本程序使用嵌套 if
语句检查用户输入的数字是奇数、偶数还是零。
#include <iostream>
using namespace std;
int main() {
int num;
cout << "Enter an integer: ";
cin >> num;
// 外部 if
if (num != 0) {
// 内部 if
if ((num % 2) == 0) {
cout << "The number is even." << endl;
}
// 内部 else
else {
cout << "The number is odd." << endl;
}
}
// 外部 else
else {
cout << "The number is 0 and it is neither even nor odd." << endl;
}
cout << "This line is always printed." << endl;
}
输出 1
Enter an integer: 34
The number is even.
This line is always printed.
输出 2
Enter an integer: 35
The number is odd.
This line is always printed.
输出 3
Enter an integer: 0
The number is 0 and it is neither even nor odd.
This line is always printed.
在上面的例子中,
- 我们将用户输入的正数并将其存储在一个整数变量
num
中。 - 然后我们使用一个
if...else
语句来检查num
是否不等于0
。- 如果
true
,则执行内部if...else
语句。 - 如果
false
,则执行外部else
条件内的代码,打印The number is 0 and it is neither even nor odd.
。
- 如果
- 内部
if...else
语句检查num
是否能整除2
。- 如果
true
,那么打印The number is even.
。 - 如果
false
,那么打印The number is odd.
。
- 如果
注意 0
也可以被 2
整除,但它实际上不是偶数。这就是为什么我们首先要在外部 if
的条件中确保输入的数字不是 0
。
**注意:**如您所见,嵌套 if...else
使您的逻辑变得复杂。如果可能,您应该始终尽量避免嵌套 if...else
.
if…else 的主体只有一个语句
如果 if...else
只有一条语句,那么可以省略 { }
。例如,您可以将下面的程序
int number = 5;
if (number > 0) {
cout << "The number is positive." << endl;
}
else {
cout << "The number is negative." << endl;
}
替换为:
int number = 5;
if (number > 0)
cout << "The number is positive." << endl;
else
cout << "The number is negative." << endl;
两个程序的输出将相同。
**注意:**虽然当主体 if...else
只有一个语句时没有必要使用 { }
,但是使用 { }
会使您的代码更具可读性。