C - if-else 语句



if-else 语句是 C 语言中经常使用的决策语句之一。if-else 语句在条件不满足时提供了一条备选路径。

else 关键字帮助您提供当 if 语句中的布尔表达式结果为假时要采取的备选操作方案。else 关键字的使用是可选的;您可以选择是否使用它。

if-else 语句的语法

以下是 if-else 子句的语法:

if (Boolean expr){
   Expression;
   . . .
}
else{
   Expression;
   . . .
}

C 编译器 会评估条件,如果条件为真,则执行 if 语句后面的语句或语句块。

如果编程逻辑需要计算机在条件为假时执行其他指令,则将其作为 else 子句的一部分。

if 语句后面可以跟一个可选的 else 语句,当布尔表达式为假时执行该语句。

if-else 语句的流程图

以下流程图表示 if-else 子句在 C 语言中的工作方式:

C if...else statement

请注意,如果 ifelse 子句中有多个语句,则需要花括号。例如,在以下代码中,我们不需要花括号。

if (marks<50)
   printf("Result: Fail\n");
else
   printf("Result: Pass\n");

但是,当 ifelse 部分有多个语句时,您需要告诉编译器将它们视为复合语句。

C if-else 语句示例

示例:使用 if-else 语句计算税款

在下面给出的代码中,计算了员工收入的税款。如果收入低于 10000,则税率为 10%。对于收入超过 10000 的部分,超出部分的税率为 15%。

#include <stdio.h>

int main() {
   int income = 5000;
   float tax;
   printf("Income: %d\n", income);

   if (income<10000){
      tax = (float)(income * 10 / 100);
      printf("tax: %f \n", tax);
   }
   else {
      tax= (float)(1000 + (income-10000) * 15 / 100);
      printf("tax: %f", tax);
   }
}

输出

运行代码并检查其输出:

Income: 5000
tax: 500.000000

将 income 变量设置为 15000,然后再次运行程序。

Income: 15000
tax: 1750.000000

示例:使用 if-else 语句检查数字

以下程序检查 char 变量是否存储的是数字字符还是非数字字符。

#include <stdio.h>

int main() {
char ch='7';

   if (ch>=48 && ch<=57){
      printf("The character is a digit.");
   }
   else{
      printf("The character is not a digit.");
   }
   return 0;
}

输出

运行代码并检查其输出:

The character is a digit.

将任何其他字符(例如 "*")赋给 "ch" 并查看结果。

The character is not a digit.

示例:没有花括号的 if-else 语句

考虑以下代码。它旨在在金额大于 100 时计算 10% 的折扣,否则不打折。

#include <stdio.h>

int main() {
   int amount = 50;
   float discount;
   printf("Amount: %d\n", amount);

   if (amount >= 100)
      discount = amount * 10 / 100;
      printf("Discount: %f \n", discount);
   else
      printf("Discount not applicable\n");

   return 0;
}

输出

程序在编译期间显示以下错误:

error: 'else' without a previous 'if'

编译器将执行 if 子句后的第一个语句,并假设由于下一个语句不是 else(无论如何它是可选的),因此后续的 printf() 语句是无条件的。但是,下一个 else 与任何 if 语句都没有关联,因此出现错误。

示例:没有花括号的 if-else 语句

也考虑以下代码:

#include <stdio.h>

int main() {
   int amount = 50;
   float discount, nett;
   printf("Amount: %d\n", amount);

   if (amount<100)
      printf("Discount not applicable\n");
   else
      printf("Discount applicable");
      discount = amount*10/100;
      nett = amount - discount;
      printf("Discount: %f Net payable: %f", discount, nett);

   return 0;
}

输出

该代码没有给出任何编译错误,但给出了不正确的输出:

Amount: 50
Discount not applicable
Discount: 5.000000 Net payable: 45.000000

它产生了不正确的输出,因为编译器假设 else 子句中只有一个语句,其余语句是无条件的。

以上两个代码示例强调了一个事实,即当 ifelse 部分有多个语句时,必须将它们放在花括号中。

为了安全起见,即使对于单个语句,最好也使用花括号。实际上,它提高了代码的可读性。

上面问题的正确解决方案如下所示:

if (amount >= 100){
   discount = amount * 10 / 100;
   printf("Discount: %f \n", discount);
} else {
   printf("Discount not applicable\n");
}

C 语言中的 else-if 语句

C 语言也允许您在程序中使用 else-if。让我们看看您可能需要在什么情况下使用 else-if 子句。

假设您遇到如下情况。如果某个条件为真,则运行其后的指定代码块。如果不是,则改为运行下一个代码块。但是,如果以上条件都不满足,并且所有其他情况都失败,则最终运行另一个代码块。在这种情况下,您将使用 else-if 子句。

else-if 语句的语法

以下是 else-if 子句的语法:

if (condition){
   // if the condition is true, 
   // then run this code
} else if(another_condition){
   // if the above condition was false 
   // and this condition is true,
   // then run the code in this block

} else{
   // if both the above conditions are false,
   // then run this code
}

else-if 语句的示例

请查看以下示例:

#include <stdio.h>

int main(void) {
   int age = 15;

   if (age < 18) {
      printf("You need to be over 18 years old to continue\n");
   }else if (age < 21) {
      printf("You need to be over 21\n");
   } else {
      printf("You are over 18 and older than 21 so you can continue \n");
   }
}

输出

运行代码并检查其输出:

You need to be over 18 years old to continue

现在,为变量 "age" 提供不同的值,然后再次运行代码。如果提供的值小于 18,您将获得不同的输出。

c_decision_making.htm
广告