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语句,但只有一个ifandelse语句。
示例 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日