原文: https://beginnersbook.com/2014/01/c-if-else-statement-example/

在上一个教程中,我们学习了如何在 C 中使用if语句。在本指南中,我们将学习如何使用 C 语句中的if else,嵌套if elseelse语句。

C if-else语句

if else语句的语法:

如果条件返回true,则执行if正文内的语句,并跳过else正文内的语句。

如果条件返回false,则跳过if正文中的语句,并执行else中的语句。

  1. if(condition) {
  2. // Statements inside body of if
  3. }
  4. else {
  5. //Statements inside body of else
  6. }

if-else语句的流程图

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

if-else语句的示例

在此程序中,要求用户输入年龄,并根据输入,if..else语句检查输入的年龄是否大于或等于 18。如果满足此条件,则显示消息“您有资格投票”,但是,如果条件不符合,则显示不同的消息“您没有资格投票”。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int age;
  5. printf("Enter your age:");
  6. scanf("%d",&age);
  7. if(age >=18)
  8. {
  9. /* This statement will only execute if the
  10. * above condition (age>=18) returns true
  11. */
  12. printf("You are eligible for voting");
  13. }
  14. else
  15. {
  16. /* This statement will only execute if the
  17. * condition specified in the "if" returns false.
  18. */
  19. printf("You are not eligible for voting");
  20. }
  21. return 0;
  22. }

输出:

  1. Enter your age:14
  2. You are not eligible for voting

注意:如果只有一个语句出现在ifelse正文中,那么你不需要使用大括号(括号)。例如,上面的程序可以像这样重写:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int age;
  5. printf("Enter your age:");
  6. scanf("%d",&age);
  7. if(age >=18)
  8. printf("You are eligible for voting");
  9. else
  10. printf("You are not eligible for voting");
  11. return 0;
  12. }

C 嵌套if-else语句

if else语句出现在另一个ifelse的正文内时,则称为嵌套if-else

嵌套if语句的语法:

  1. if(condition) {
  2. //Nested if else inside the body of "if"
  3. if(condition2) {
  4. //Statements inside the body of nested "if"
  5. }
  6. else {
  7. //Statements inside the body of nested "else"
  8. }
  9. }
  10. else {
  11. //Statements inside the body of "else"
  12. }

嵌套if-else的示例

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int var1, var2;
  5. printf("Input the value of var1:");
  6. scanf("%d", &var1);
  7. printf("Input the value of var2:");
  8. scanf("%d",&var2);
  9. if (var1 != var2)
  10. {
  11. printf("var1 is not equal to var2\n");
  12. //Nested if else
  13. if (var1 > var2)
  14. {
  15. printf("var1 is greater than var2\n");
  16. }
  17. else
  18. {
  19. printf("var2 is greater than var1\n");
  20. }
  21. }
  22. else
  23. {
  24. printf("var1 is equal to var2\n");
  25. }
  26. return 0;
  27. }

输出:

  1. Input the value of var1:12
  2. Input the value of var2:21
  3. var1 is not equal to var2
  4. var2 is greater than var1

C - else..if语句

当需要检查程序中的多个条件时,else..if语句很有用,可以使用else..if语句避免嵌套if-else块。

else..if语法的语法:

  1. if (condition1)
  2. {
  3. //These statements would execute if the condition1 is true
  4. }
  5. else if(condition2)
  6. {
  7. //These statements would execute if the condition2 is true
  8. }
  9. else if (condition3)
  10. {
  11. //These statements would execute if the condition3 is true
  12. }
  13. .
  14. .
  15. else
  16. {
  17. //These statements would execute if all the conditions return false.
  18. }

else..if语句的示例

让我们在讨论嵌套的if..else时采用我们在上面看到的相同示例。我们将使用else..if语句重写相同的程序。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int var1, var2;
  5. printf("Input the value of var1:");
  6. scanf("%d", &var1);
  7. printf("Input the value of var2:");
  8. scanf("%d",&var2);
  9. if (var1 !=var2)
  10. {
  11. printf("var1 is not equal to var2\n");
  12. }
  13. else if (var1 > var2)
  14. {
  15. printf("var1 is greater than var2\n");
  16. }
  17. else if (var2 > var1)
  18. {
  19. printf("var2 is greater than var1\n");
  20. }
  21. else
  22. {
  23. printf("var1 is equal to var2\n");
  24. }
  25. return 0;
  26. }

输出:

  1. Input the value of var1:12
  2. Input the value of var2:21
  3. var1 is not equal to var2

正如您所看到的那样,只执行if正文中的语句。这是因为在该语句中,只要满足条件,就会执行该块内的语句,并忽略其余的块。

重要事项:

  1. elseelse..if是可选语句,只有if语句的程序运行正常。
  2. 否则,如果没有if,则无法使用。
  3. if else..if块中可以有任意数量的else..if语句。
  4. 如果没有满足任何条件,则执行else块中的语句。
  5. 就像关系运算符一样,我们也可以使用逻辑运算符,如 AND(&&),OR(||)和 NOT(!)。