if语句的一般形式或语法是:
if(expression) Statement1; Next_statement;
请注意,第一行末尾没有分号。
第二行可以直接写在第一行之后,如下所示:
if(expression) Statement1;
括号中的表达式可以是导致值为true或false的任何表达式。
如果表达式为true,则执行Statement1,之后程序继续使用Next_statement。
如果表达式为false,则会跳过Statement1,并使用Next_statement立即继续执行。
因为if语句的控制表达式预期会产生一个布尔结果,所以编译器将安排将产生数值结果的if表达式的结果转换为bool类型。
这里有一个语句说明了这一点:
if(count) printf("The value of count is not zero.\n");
如果count不为0,则只会产生输出,因为count的值为0将导致if表达式的值为false。
count的任何非零值将导致表达式为true。
以下代码显示了if语句的简单示例
#include <stdio.h>
int main(void)
{
int number = 0;
printf("\nEnter an integer between 1 and 10: ");
scanf("%d",&number);
if(number > 5)
printf("You entered %d which is greater than 5\n", number);
if(number < 6)
printf("You entered %d which is less than 6\n", number);
return 0;
}
上面的代码生成以下结果。
if..then的语法模型可以表示如下:
if (conditional) { // do something }else{ // do another job }
可以通过逻辑或/和比较操作获得条件。
if-else语句的语法如下:
if(expression) Statement1; else Statement2; Next_statement;
在这里,你有一种或两种情况。您将始终执行Statement1或Statement2,具体取决于表达式是否导致值为true或false。
如果expression为true,则执行Statement1,并继续执行Next_statement。
如果expression为false,则执行else关键字后面的Statement2,并继续执行Next_statement。
#include <stdio.h>
int main(void)
{
const double PRICE = 3.50; // Unit price in dollars
int quantity = 0;
printf("Enter the number that you want to buy:");
scanf(" %d", &quantity); // Read the input
double total = 0.0; // Total price
if(quantity > 10) // 5% discount
total = quantity * PRICE * 0.95;
else // No discount
total = quantity*PRICE;
printf("The price for %d is $%.2f\n", quantity, total);
return 0;
}
上面的代码生成以下结果。
您可以使用if语句中大括号{}之间的语句块。
当if表达式的值为true时,可以提供要执行的几个语句。
涉及语句块的if语句的一般形式如下所示:
if(expression) { StatementA1; StatementA2; . . . } else { StatementB1; StatementB2; . . . } Next_statement;
这里是示例代码:
#include <stdio.h>
int main() {
int a, b;
a = 5;
b = 8;
if(a>b || a-b<a){
printf("conditional-->a>b || a-b<a \n");
}else{
printf("..another \n");
}
return 0;
}
上面的代码生成以下结果。
#include <stdio.h>
#include <limits.h> // For LONG_MAX
int main(void)
{
long test = 0L; // Stores the integer to be checked
printf("Enter an integer less than %ld:", LONG_MAX);
scanf(" %ld", &test);
// Test for odd or even by checking the remainder after dividing by 2
if(test % 2L == 0L)
{
printf("The number %ld is even", test);
// Now check whether half the number is also even
if((test/2L) % 2L == 0L)
{
printf("\nHalf of %ld is also even", test);
printf("\nThat"s interesting isn"t it?\n");
}
}
else
printf("The number %ld is odd\n", test);
return 0;
}
上面的代码生成以下结果。
字符值可以表示为整数或引号之间的键盘字符,例如“A”。
此示例使用一些新的逻辑运算符。
程序会将输入的大写字母转换为小写字母:
#include <stdio.h>
int main(void)
{
char letter = 0; // Stores a character
printf("Enter an uppercase letter:"); // Prompt for input
scanf("%c", &letter); // Read a character
// Check whether the input is uppercase
if(letter >= "A") // Is it A or greater?
if(letter <= "Z") // and is it Z or lower?
{ // It is uppercase
letter = letter - "A" + "a"; // Convert from upper- to lowercase
printf("You entered an uppercase %c\n", letter);
}
else // It is not an uppercase letter
printf("A capital letter.\n");
return 0;
}
上面的代码生成以下结果。