C++ if, if...else 和嵌套的 if...else
预计时间: 8分钟
在本教程中,我们将通过示例学习使用if...else语句创建决策程序。C++语言使用if...else语句在一定条件下运行一段代码,在不同条件下运行另一段代码。
C++中有三种形式的if...else
语句。
if
语句if...else
语句if...else if...else
语句
C++ if 语句
if
语句的语法是:
if (condition) {
// if 语句体
}
if
语句计算( )
括号内condition
的值。
- 如果
condition
计算结果为true
,则执行if
语句体中的代码。 - 如果
condition
计算结果为false
,则跳过if
语句体中的代码。
注意:
{ }
里面的代码是if
语句体。
示例 1:C++ if 语句
// 如果用户输入的数是正数,则打印输出这个数
#include <iostream>
using namespace std;
int main() {
int number;
cout << "输入一个整数:";
cin >> number;
// 检查数字是否为正数
if (number > 0) {
cout << "您输入了一个正数:" << number << endl;
}
cout << "这条语句总是被执行。";
return 0;
}
输出 1
输入一个整数:5
您输入了一个正数:5
这条语句总是被执行。
当用户输入5
时,条件number > 0
被评估为true
并执行if
语句体内的语句。
输出 2
输入一个数字:-5
该语句总是被执行。
当用户输入-5
时,条件number > 0
被评估为false
并且不执行if
语句体内的语句。
C++ if...else
该if
语句可以有一个可选else
子句。它的语法是:
if (condition) {
// 条件为真时的代码块
}
else {
// 条件为假时的代码块
}
该if..else
语句计算括号内condition
的值,
如果condition
评估true
,
if
代码块内的代码被执行else
代码块内的代码被跳过执行
如果condition
评估false
,
else
代码块内的代码被执行if
代码块内的代码被跳过执行
示例 2:C++ if...else 语句
// 检查整数是正数还是负数的程序
// 该程序将0视为正数
#include <iostream>
using namespace std;
int main() {
int number;
cout << "输入一个整数:";
cin >> number;
if (number >= 0) {
cout << "您输入了一个正整数:" << number << endl;
}
else {
cout << "您输入了一个负整数:" << number << endl;
}
cout << "始终打印此行。";
return 0;
}
输出 1
输入一个整数:4
您输入了一个正整数:4。
始终打印此行。
在上面的程序中,我们有条件number >= 0
。如果我们输入的数字大于或等于0,然后条件评估true
。
在这里,我们输入4. 所以,条件是true
。因此,执行主体内的语句if
。
输出 2
输入一个整数:-4
您输入了一个负整数:-4。
始终打印此行。
在这里,我们输入-4. 所以,条件是false
。因此,执行主体内的语句else
。
C++ 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
。
**注意:**可以有多个else if
语句,但只有一个if
andelse
语句。
示例 3:C++ if...else...else if
// 程序检查一个整数是否为正、负或零
#include <iostream>
using namespace std;
int main() {
int number;
cout << "输入一个整数:";
cin >> number;
if (number > 0) {
cout << "您输入了一个正整数:" << number << endl;
}
else if (number < 0) {
cout << "您输入了一个正整数:" << number << endl;
}
else {
cout << "您输入了 0。" << endl;
}
cout << "始终打印此行。";
return 0;
}
输出 1
输入一个整数:1
您输入了一个正整数:1。
始终打印此行。
输出 2
输入一个整数:-2
您输入了一个负整数:-2。
始终打印此行。
输出 3
输入一个整数:0
您输入了 0。
始终打印此行。
在这个程序中,我们从用户那里获取一个数字。然后我们使用if...else if...else
梯子来检查数字是正数、负数还是零。
如果数字大于,则执行块0
内的代码。if
如果数字小于,则执行块0
内的代码。else if
否则,else
块内的代码将被执行。
C++ 嵌套 if...else
有时,我们需要if
在另一个语句中使用一个if
语句。这称为嵌套if
语句。
将其视为多层if
语句。第一个是外部的if语句,里面是另一个内部的if语句。它的语法是:
// outer if statement
if (condition1) {
// statements
// inner if statement
if (condition2) {
// statements
}
}
笔记:
- 我们可以根据需要在内部
if
语句中添加else
和else if
语句。 - 内部的if语句也可以插入到外部的else或else if语句中(如果它们存在)。
- 我们可以嵌套多层
if
语句。
示例 4:C++ 嵌套 if
// c++程序查找一个整数是正、负还是零
// 使用嵌套if语句
#include <iostream>
using namespace std;
int main() {
int num;
cout << "输入一个整数:";
cin >> num;
// 外部 if 条件
if (num != 0) {
// 内部 if 条件
if (num > 0) {
cout << "这个数字是正数。" << endl;
}
// 内部 else 条件
else {
cout << "数为负数。" << endl;
}
}
// 外部 else 条件
else {
cout << "数字为 0,既不是正数也不是负数。" << endl;
}
cout << "始终打印此行。" << endl;
return 0;
}
输出 1
输入一个整数:35
这个数字是正数。
始终打印此行。
输出 2
输入一个整数:-35
数为负数。
始终打印此行。
输出 3
输入一个整数:0
数字为 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
只有一个语句,则不必使用,但使用{ }
会使您的代码更具可读性。
更新于2021年05月04日