C++ if...else

在本文中,我们通过几个示例讨论了 C++ 中的 if…else 语句。

在计算机编程中,我们经常需要在满足特定条件时来运行某些代码。

例如,根据学生获得的分数分配成绩(A、B、C)。

  • 如果百分比高于 90,则指定为 A
  • 如果百分比高于 75,则指定为 B
  • 如果百分比高于 65,则指定为 C

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

  1. if 语句
  2. if...else 语句
  3. if...else if...else 语句

C++ if 语句

if 语句的语法是:

if (condition) {
   // 代码块
}

if 语句计算括号 ( ) 内的值 condition

  • 如果 condition 计算结果为 true ,则执行 if 主体内的代码。
  • 如果 condition 计算结果为 false ,则跳过 if 主体内的代码。

注意: { } 里面的代码是 if 语句的主体。

下图说明了 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 语句的工作逻辑。

if&hellip;else 语句的工作原理
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 语句的工作逻辑。

if&hellip;else if&hellip;else 语句的工作原理
if...else if...else 语句原理工作原理

**注意:**可以有多个 else if 语句,但只能有一个 ifelse 语句。

示例 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 语句中添加 elseelse if 语句。
  • 内部 if 语句也可以插入到外部的 elseelse 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 只有一个语句时没有必要使用 { },但是使用 { } 会使您的代码更具可读性。