原文: https://www.programiz.com/cpp-programming/if-else

在本文中,您将学习使用不同形式的 if..else 语句在 C++ 程序中创建决策语句。

在计算机编程中,仅当满足特定条件时,才使用if语句运行块代码。

例如,根据学生获得的分数分配成绩(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语句的语法为:

  1. if (condition) {
  2. // body of if statement
  3. }

if语句求值括号( )内的condition

  • 如果condition求值为true,则将执行if主体内部的代码。
  • 如果condition求值为false,则将跳过if主体内部的代码。

注意{ }内的代码是if语句的主体。

C   `if`,`if...else`和嵌套`if...else` - 图1

C ++ if语句的原理


示例 1:C++ if语句

  1. // Program to print positive number entered by the user
  2. // If the user enters a negative number, it is skipped
  3. #include <iostream>
  4. using namespace std;
  5. int main() {
  6. int number;
  7. cout << "Enter an integer: ";
  8. cin >> number;
  9. // checks if the number is positive
  10. if (number > 0) {
  11. cout << "You entered a positive integer: " << number << endl;
  12. }
  13. cout << "This statement is always executed.";
  14. return 0;
  15. }

输出 1

  1. Enter an integer: 5
  2. You entered a positive number: 5
  3. This statement is always executed.

当用户输入5时,条件number > 0被求值为true,并且执行了if主体内部的语句。

输出 2

  1. Enter a number: -5
  2. This statement is always executed.

当用户输入-5时,条件number > 0被求值为false,并且if主体内部的语句不被执行。


C++ if...else

if语句可以具有可选的else子句。 其语法为:

  1. if (condition) {
  2. // block of code if condition is true
  3. }
  4. else {
  5. // block of code if condition is false
  6. }

if..else语句求值括号内的condition

C   `if`,`if...else`和嵌套`if...else` - 图2

C++ if...else的原理

如果condition求值为true

  • if体内的代码被执行
  • else正文中的代码从执行中跳过

如果condition求值为false

  • else体内的代码被执行
  • if正文中的代码从执行中跳过

示例 2:C++ if...else语句

  1. // Program to check whether an integer is positive or negative
  2. // This program considers 0 as a positive number
  3. #include <iostream>
  4. using namespace std;
  5. int main() {
  6. int number;
  7. cout << "Enter an integer: ";
  8. cin >> number;
  9. if (number >= 0) {
  10. cout << "You entered a positive integer: " << number << endl;
  11. }
  12. else {
  13. cout << "You entered a negative integer: " << number << endl;
  14. }
  15. cout << "This line is always printed.";
  16. return 0;
  17. }

输出 1

  1. Enter an integer: 4
  2. You entered a positive integer: 4.
  3. This line is always printed.

在上面的程序中,我们具有条件number >= 0。 如果我们输入大于或等于0的数字,则条件为true

在这里,我们输入4。 因此,条件为true。 因此,将执行if主体内部的语句。

输出 2

  1. Enter an integer: -4
  2. You entered a negative integer: -4.
  3. This line is always printed.

在这里,我们输入-4。 因此,条件为false。 因此,将执行else主体内部的语句。


C++ if...else if...else语句

if...else语句用于在两个替代方案之间执行代码块。 但是,如果需要在两个以上的选择之间进行选择,则可以使用if...else if...else语句。

if...else if...else语句的语法为:

  1. if (condition1) {
  2. // code block 1
  3. } else if (condition2){
  4. // code block 2
  5. } else {
  6. // code block 3
  7. }

这里,

  • 如果condition1求值为true,则执行code block 1
  • 如果condition1求值为false,则求值condition2
  • 如果condition2true,则执行code block 2
  • 如果condition2false,则执行code block 3

C   `if`,`if...else`和嵌套`if...else` - 图3

if...else if...else语句如何工作

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


示例 3:C++ if...else if...else

  1. // Program to check whether an integer is positive, negative or zero
  2. #include <iostream>
  3. using namespace std;
  4. int main() {
  5. int number;
  6. cout << "Enter an integer: ";
  7. cin >> number;
  8. if (number > 0) {
  9. cout << "You entered a positive integer: " << number << endl;
  10. }
  11. else if (number < 0) {
  12. cout << "You entered a negative integer: " << number << endl;
  13. }
  14. else {
  15. cout << "You entered 0." << endl;
  16. }
  17. cout << "This line is always printed.";
  18. return 0;
  19. }

输出 1

  1. Enter an integer: 1
  2. You entered a positive integer: 1.
  3. This line is always printed.

输出 2

  1. Enter an integer: -2
  2. You entered a negative integer: -2.
  3. This line is always printed.

输出 3

  1. Enter an integer: 0
  2. You entered 0.
  3. This line is always printed.

在此程序中,我们从用户那里获取一个号码。 然后,我们使用if...else if...else梯形图检查数字是正数,负数还是零。

如果该数字大于0,则执行if块内的代码。 如果该数字小于0,则执行else if块内的代码。 否则,将执行else块中的代码。


C++ if...else嵌套

有时,我们需要在另一个if语句内使用if语句。 这称为嵌套if语句。

将其视为if语句的多层。 有第一个外部if语句,在内部是另一个内部if语句。 其语法为:

  1. // outer if statement
  2. if (condition1) {
  3. // statements
  4. // inner if statement
  5. if (condition2) {
  6. // statements
  7. }
  8. }

注意

  • 我们可以根据需要将elseelse if语句添加到内部if语句中。
  • 内部if语句也可以插入外部elseelse if语句(如果存在)中。
  • 我们可以嵌套if语句的多层。

示例 4:C++ 嵌套if

  1. // C++ program to find if an integer is even or odd or neither (0)
  2. // using nested if statements
  3. #include <iostream>
  4. using namespace std;
  5. int main() {
  6. int num;
  7. cout << "Enter an integer: ";
  8. cin >> num;
  9. // outer if condition
  10. if (num != 0) {
  11. // inner if condition
  12. if ((num % 2) == 0) {
  13. cout << "The number is even." << endl;
  14. }
  15. // inner else condition
  16. else {
  17. cout << "The number is odd." << endl;
  18. }
  19. }
  20. // outer else condition
  21. else {
  22. cout << "The number is 0 and it is neither even nor odd." << endl;
  23. }
  24. cout << "This line is always printed." << endl;
  25. }

输出 1

  1. Enter an integer: 34
  2. The number is even.
  3. This line is always printed.

输出 2

  1. Enter an integer: 35
  2. The number is odd.
  3. This line is always printed.

输出 3

  1. Enter an integer: 0
  2. The number is 0 and it is neither even nor odd.
  3. 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语句检查输入的数字是否可被2整除。

    • 如果为true,那么我们将打印一条声明该数字为偶数的语句。
    • 如果false,我们打印该数字为奇数。

请注意,0也可被2整除,但实际上不是偶数。 这就是为什么我们首先要确保在if外部条件下输入的数字不是0

注意:如您所见,嵌套的if...else使您的逻辑变得复杂。 如果可能,您应始终避免嵌套if...else


只有一个语句的if...else的主体

如果if...else的主体只有一个语句,则可以在程序中省略{ }。 例如,您可以替换

  1. int number = 5;
  2. if (number > 0) {
  3. cout << "The number is positive." << endl;
  4. }
  5. else {
  6. cout << "The number is negative." << endl;
  7. }

  1. int number = 5;
  2. if (number > 0)
  3. cout << "The number is positive." << endl;
  4. else
  5. cout << "The number is negative." << endl;

两个程序的输出将相同。

注意:尽管如果if...else的主体只有一个语句,则不必使用{ },但使用{ }可使代码更具可读性。


有关决策的更多信息

在某些情况下,三元运算符可以替换if...else语句。 要了解更多信息,请访问 C++ 三元运算符

如果我们需要根据给定的测试条件在多个选项之间进行选择,则可以使用switch语句。 要了解更多信息,请访问 C++ 开关


查看以下示例以了解更多信息:

C++ 程序:用于检查数字是偶数还是奇数

C++ 程序:用于检查字符是元音还是辅音

C++ 程序:查找三个数字中最大的数字