原文: https://www.programiz.com/c-programming/c-if-else-statement
在本教程中,您将在示例的帮助下了解 C 编程中的if语句(包括if...else和嵌套的if..else)。
C if语句
C 编程中if语句的语法为:
if (test expression){// statements to be executed if the test expression is true}
语句如何工作?
if语句求值括号()内的测试表达式。
- 如果测试表达式的计算结果为
true,则将执行if主体内部的语句。 - 如果测试表达式的计算结果为
false,则不会执行if主体内部的语句。

要了解有关何时将测试表达式求值为true(非零值)和false(0)的更多信息,请检查关系和逻辑运算符。
示例 1:if语句
// Program to display a number if it is negative#include <stdio.h>int main() {int number;printf("Enter an integer: ");scanf("%d", &number);// true if number is less than 0if (number < 0) {printf("You entered %d.\n", number);}printf("The if statement is easy.");return 0;}
输出 1
Enter an integer: -2You entered -2.The if statement is easy.
当用户输入 -2 时,测试表达式number<0被求值为true。 因此,屏幕上显示您输入的 -2 。
输出 2
Enter an integer: 5The if statement is easy.
当用户输入 5 时,测试表达式number<0的计算结果为false,并且if主体内的语句未执行
C if...else语句
if语句可以具有可选的else块。if..else语句的语法为:
if (test expression) {// statements to be executed if the test expression is true}else {// statements to be executed if the test expression is false}
if...else语句如何工作?
如果测试表达式的计算结果为true,
if主体内部的语句将被执行。else主体内部的语句从执行中跳过。
如果测试表达式的值为假,
- 执行
else主体内的语句 if主体内部的语句从执行中跳过。

示例 2:if...else语句
// Check whether an integer is odd or even#include <stdio.h>int main() {int number;printf("Enter an integer: ");scanf("%d", &number);// True if the remainder is 0if (number%2 == 0) {printf("%d is an even integer.",number);}else {printf("%d is an odd integer.",number);}return 0;}
输出
Enter an integer: 77 is an odd integer.
当用户输入 7 时,测试表达式number%2==0被求值为false。 因此,将执行else主体内部的语句。
C if...else阶梯
if...else语句根据测试表达式是true还是false来执行两个不同的代码。 有时,必须从两种以上的可能性中进行选择。
if...else阶梯允许您在多个测试表达式之间进行检查并执行不同的语句。
if...else阶梯的语法
if (test expression1) {// statement(s)}else if(test expression2) {// statement(s)}else if (test expression3) {// statement(s)}..else {// statement(s)}
示例 3:C if...else阶梯
// Program to relate two integers using =, > or < symbol#include <stdio.h>int main() {int number1, number2;printf("Enter two integers: ");scanf("%d %d", &number1, &number2);//checks if the two integers are equal.if(number1 == number2) {printf("Result: %d = %d",number1,number2);}//checks if number1 is greater than number2.else if (number1 > number2) {printf("Result: %d > %d", number1, number2);}//checks if both test expressions are falseelse {printf("Result: %d < %d",number1, number2);}return 0;}
输出
Enter two integers: 1223Result: 12 < 23
if...else嵌套
可以在另一个if...else语句的主体内包含if...else语句。
示例 4:if...else嵌套
下面给出的程序使用<,>和=来关联两个整数,类似于if...else阶梯的示例。 但是,我们将使用嵌套的if...else语句来解决此问题。
#include <stdio.h>int main() {int number1, number2;printf("Enter two integers: ");scanf("%d %d", &number1, &number2);if (number1 >= number2) {if (number1 == number2) {printf("Result: %d = %d",number1,number2);}else {printf("Result: %d > %d", number1, number2);}}else {printf("Result: %d < %d",number1, number2);}return 0;}
如果if...else语句的主体只有一个语句,则不需要使用方括号{}。
例如,此代码
if (a > b) {print("Hello");}print("Hi");
相当于
if (a > b)print("Hello");print("Hi");
