C++ if, if...else 和嵌套的 if...else

预计时间: 8分钟

在本教程中,我们将通过示例学习使用if...else语句创建决策程序。C++语言使用if...else语句在一定条件下运行一段代码,在不同条件下运行另一段代码。

C++中有三种形式的if...else语句。

  1. if 语句
  2. if...else 语句
  3. 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
  • 如果condition2true,则执行code block 2
  • 如果condition2false,则执行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语句中添加elseelse 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日