C - If 语句
条件执行指令是计算机程序的基本要求。C 语言中的 if 语句是主要的条件语句。C 语言允许使用可选的 else 关键字来指定当 if 条件为假时要执行的语句。
C - if 语句
if 语句是 C 语言编程中一个基本的决策控制语句。根据 if 语句中布尔条件的真假,代码块中的一个或多个语句将被执行。
if 语句的语法
if 语句的语法如下:
if(boolean_expression) { /* 如果布尔表达式为真,则将执行语句 */ }
if 语句如何工作?
C 使用一对花括号来组成代码块。如果布尔表达式的计算结果为真,则将执行 if 语句内的代码块。
如果布尔表达式的计算结果为假,则将执行 if 语句结束后(右花括号后)的第一组代码。
C 语言编程将任何非零和非空值视为真。如果值为零或空,则将其视为假值。
if 语句流程图
if 语句的行为如下流程图所示 -

流程图说明
当程序控制遇到 if 语句时,将评估条件。
如果条件为真,则执行 if 块内的语句。
如果条件为假,程序流程将绕过条件块。
执行 if 块之后的语句以继续程序流程。
C 语言 if 语句示例
此示例演示了if 语句。它判断变量的值是否小于 20,并告知用户。
#include <stdio.h> int main (){ /*局部变量声明*/ int a; // 针对不同的"a"值运行程序 // 先赋值为 12,然后再赋值为 40 a = 12; // 改为 40 并再次运行 printf("Value of a is : %d ", a); // 使用 if 语句检查布尔条件 if(a < 20){ //如果条件成立,则打印以下内容 printf("a is less than 20 " ); } return 0; }
输出
运行上述程序并检查其输出 -
Value of a is : 12 a is less than 20
现在分配一个大于 20 的数字。if 条件不执行。
Value of a is: 40
带有逻辑运算的 if 语句
您可以在 if 语句的括号中使用 && 或 || 运算符,将复合布尔表达式放入括号中。
示例
以下示例中,比较三个变量"a"、"b"和"c"。当"a"大于"b"和"c"时,将执行 if 代码块。
#include <stdio.h> int main () { /*局部变量声明*/ int a, b, c; /*对 a、b 和 c 使用不同的值 10, 5, 7 10, 20, 15 */ // 下次分别改为 10,20,15 a = 10; b = 5; c = 7; if (a>=b && a>=c){ printf ("a is greater than b and c "); } printf("a: %d b:%d c:%d", a, b, c); return 0; }
输出
运行代码并检查其输出 -
//当 a、b 和 c 的值为 10 5 7 时 a 大于 b 和 c a: 10 b:5 c:7 //当 a、b 和 c 的值为 10 20 15 时 a: 10 b:20 c:15
请注意,条件块后面的语句在执行该块之后执行。如果条件为假,程序将直接跳转到该代码块之后的语句。
多个 if 语句
如果您需要检查多个条件,可以多次使用 if 语句。
示例
在此示例中,净应付金额是通过对账单金额应用折扣来计算的。
如果金额在 1000 到 5000 之间,则适用 5% 的折扣;如果金额超过 5000,则适用 10% 的折扣。低于 1000 的购买不适用折扣。
#include <stdio.h> int main () { // 局部变量声明 int amount; float discount, net; /*分别针对 amount 500、2250 和 5200 的不同值运行程序。相应条件下的代码块将被执行*/ // 分别更改为 2250 和 5200 并再次运行 amount = 500; if (amount < 1000){ discount=0; } if (amount >= 1000 && amount<5000){ discount=5; } if (amount >= 5000){ discount=10; } net = amount - amount*discount/100; printf("Amount: %d Discount: %f Net payable: %f", amount, discount, net); return 0; }
输出
//when the bill amount is 500 Amount: 500 Discount: 0.000000 Net payable: 500.000000 //when the bill amount is 2250 Amount: 2250 Discount: 5.000000 Net payable: 2137.500000 //when the bill amount is 5200 Amount: 5200 Discount: 10.000000 Net payable: 4680.000000
使用 if 语句检查多个条件
您也可以在单个 if 语句中使用逻辑运算符检查多个条件。
示例
在此程序中,只有当"物理"和"数学"的平均成绩大于等于 50 分时,学生才会被判定为通过。此外,学生的两门科目成绩都必须超过 35 分。否则,学生将被判定为不通过。
#include <stdio.h> int main (){ /*局部变量声明*/ int phy, maths; float avg; /*使用不同的物理和数学值来检查条件执行*/ //更改为 40, 40 和 80, 40 phy = 50; maths = 50; avg = (float)(phy + maths)/2; printf("Phy: %d Maths: %d Avg: %f ", phy, maths, avg); if (avg >= 50 && (maths >= 35 && phy >= 35)){ printf("Result: Pass"); } if (avg<50) { printf("Result: Fail "); } return 0; }
输出
运行代码并检查其输出 -
//当物理和数学成绩为 - 50 50 Phy: 50 Maths: 50 Avg: 50.000000 Result: Pass //当物理和数学成绩为 40 40 Phy: 40 Maths: 40 Avg: 40.000000 Result: Fail //当物理和数学成绩为 80 40 Phy: 80 Maths: 40 Avg: 60.000000 Result: Pass