Cprogramming 简明教程
C - The if-else Statement
if-else 语句是 C 中最常用的 decision-making statements 之一。 if-else 语句在条件未满足时提供了备选路径。
当 if 语句中的布尔表达式变为假时, else 关键词帮助你提供一个备选行动方针。使用 else 关键词是可选的;是否使用它取决于你。
Syntax of if-else Statement
以下是 if-else 子句的语法 −
if (Boolean expr){
Expression;
. . .
}
else{
Expression;
. . .
}
C compiler 评估条件,如果该条件为 true,将执行 if statement 之后的一个语句或一个语句块。
如果编程逻辑需要计算机在条件为 false 时执行一些其他指令,则这些指令会被作为 else 子句的一部分放置。
在 if 语句后面是一个可选的 else 语句,该语句在布尔表达式为 false 时执行。
Flowchart of if-else Statement
以下流程图表示了 if-else 子句在 C 中的工作方式 −
请注意,如果你有多个要执行的语句,则 if 中和 else 子句中的大括号是必需的。例如,在以下代码中,我们不需要大括号。
if (marks<50)
printf("Result: Fail\n");
else
printf("Result: Pass\n");
但是,如果在 if 或 else 部分中有不止一个语句,你需要告诉编译器将他们作为复合语句对待。
C if-else Statement Examples
Example: Tax Calculation Using if-else Statement
在下面给出的代码中,计算了员工收入的税款。如果收入低于 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
Example: Checking Digit Using if-else Statement
以下程序检查 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.
Example: if-else Statement Without Curly Braces
考虑以下代码。如果数额大于 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 语句,因此产生错误。
Example: if-else Statement Without Curly Braces
也考虑以下代码 −
#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 子句中只有一个语句,而其余语句都是无条件的。
以上两个代码示例强调了这样一个事实:当 if 或 else 中还有多个语句时,必须将它们放在大括号中。
为了安全起见,即使对于单个语句,最好总是使用大括号。事实上,它改进了代码的可读性。
下面展示了上述问题的正确解决方案 −
if (amount >= 100){
discount = amount * 10 / 100;
printf("Discount: %f \n", discount);
} else {
printf("Discount not applicable\n");
}
The else-if Statement in C
C 还允许你在程序中使用 else-if 。让我们看看你可以在哪里使用 else-if 子句。
让我们假设你有如下情况。如果一个条件为真,运行紧随其后的给定代码块。如果条件不真,则运行下一个代码块。但是,如果上述情况都不符合且所有其他情况都失败,最终运行另一个代码块。在这种情况中,你将使用一个 else-if 子句。
Syntax of else-if Statement
下面是 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
}
Example of else-if Statement
请看以下示例:
#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,你会得到不同的输出。