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

在本教程中,您将在示例的帮助下了解 C 编程中的if语句(包括if...else和嵌套的if..else)。

C if语句

C 编程中if语句的语法为:

  1. if (test expression)
  2. {
  3. // statements to be executed if the test expression is true
  4. }

语句如何工作?

if语句求值括号()内的测试表达式。

  • 如果测试表达式的计算结果为true,则将执行if主体内部的语句。
  • 如果测试表达式的计算结果为false,则不会执行if主体内部的语句。

C `if...else`语句 - 图1

要了解有关何时将测试表达式求值为true(非零值)和false(0)的更多信息,请检查关系逻辑运算符


示例 1:if语句

  1. // Program to display a number if it is negative
  2. #include <stdio.h>
  3. int main() {
  4. int number;
  5. printf("Enter an integer: ");
  6. scanf("%d", &number);
  7. // true if number is less than 0
  8. if (number < 0) {
  9. printf("You entered %d.\n", number);
  10. }
  11. printf("The if statement is easy.");
  12. return 0;
  13. }

输出 1

  1. Enter an integer: -2
  2. You entered -2.
  3. The if statement is easy.

当用户输入 -2 时,测试表达式number<0被求值为true。 因此,屏幕上显示您输入的 -2 。

输出 2

  1. Enter an integer: 5
  2. The if statement is easy.

当用户输入 5 时,测试表达式number<0的计算结果为false,并且if主体内的语句未执行


C if...else语句

if语句可以具有可选的else块。if..else语句的语法为:

  1. if (test expression) {
  2. // statements to be executed if the test expression is true
  3. }
  4. else {
  5. // statements to be executed if the test expression is false
  6. }

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

如果测试表达式的计算结果为true

  • if主体内部的语句将被执行。
  • else主体内部的语句从执行中跳过。

如果测试表达式的值为假,

  • 执行else主体内的语句
  • if主体内部的语句从执行中跳过。

C `if...else`语句 - 图2


示例 2:if...else语句

  1. // Check whether an integer is odd or even
  2. #include <stdio.h>
  3. int main() {
  4. int number;
  5. printf("Enter an integer: ");
  6. scanf("%d", &number);
  7. // True if the remainder is 0
  8. if (number%2 == 0) {
  9. printf("%d is an even integer.",number);
  10. }
  11. else {
  12. printf("%d is an odd integer.",number);
  13. }
  14. return 0;
  15. }

输出

  1. Enter an integer: 7
  2. 7 is an odd integer.

当用户输入 7 时,测试表达式number%2==0被求值为false。 因此,将执行else主体内部的语句。


C if...else阶梯

if...else语句根据测试表达式是true还是false来执行两个不同的代码。 有时,必须从两种以上的可能性中进行选择。

if...else阶梯允许您在多个测试表达式之间进行检查并执行不同的语句。


if...else阶梯的语法

  1. if (test expression1) {
  2. // statement(s)
  3. }
  4. else if(test expression2) {
  5. // statement(s)
  6. }
  7. else if (test expression3) {
  8. // statement(s)
  9. }
  10. .
  11. .
  12. else {
  13. // statement(s)
  14. }

示例 3:C if...else阶梯

  1. // Program to relate two integers using =, > or < symbol
  2. #include <stdio.h>
  3. int main() {
  4. int number1, number2;
  5. printf("Enter two integers: ");
  6. scanf("%d %d", &number1, &number2);
  7. //checks if the two integers are equal.
  8. if(number1 == number2) {
  9. printf("Result: %d = %d",number1,number2);
  10. }
  11. //checks if number1 is greater than number2.
  12. else if (number1 > number2) {
  13. printf("Result: %d > %d", number1, number2);
  14. }
  15. //checks if both test expressions are false
  16. else {
  17. printf("Result: %d < %d",number1, number2);
  18. }
  19. return 0;
  20. }

输出

  1. Enter two integers: 12
  2. 23
  3. Result: 12 < 23

if...else嵌套

可以在另一个if...else语句的主体内包含if...else语句。


示例 4:if...else嵌套

下面给出的程序使用<>=来关联两个整数,类似于if...else阶梯的示例。 但是,我们将使用嵌套的if...else语句来解决此问题。

  1. #include <stdio.h>
  2. int main() {
  3. int number1, number2;
  4. printf("Enter two integers: ");
  5. scanf("%d %d", &number1, &number2);
  6. if (number1 >= number2) {
  7. if (number1 == number2) {
  8. printf("Result: %d = %d",number1,number2);
  9. }
  10. else {
  11. printf("Result: %d > %d", number1, number2);
  12. }
  13. }
  14. else {
  15. printf("Result: %d < %d",number1, number2);
  16. }
  17. return 0;
  18. }

如果if...else语句的主体只有一个语句,则不需要使用方括号{}

例如,此代码

  1. if (a > b) {
  2. print("Hello");
  3. }
  4. print("Hi");

相当于

  1. if (a > b)
  2. print("Hello");
  3. print("Hi");