258 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			258 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Conditional Statements
							 | 
						|||
| 
								 | 
							
								localeTitle: 条件陈述
							 | 
						|||
| 
								 | 
							
								---
# C中的条件语句
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								条件语句也称为分支语句。他们之所以这么称呼,是因为该计划选择跟随一个或另一个分支。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 如果声明
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								这是条件语句的最简单形式。它由一个布尔表达式后跟一个或多个语句组成。如果布尔表达式的计算结果为**true** ,那么将执行'if'语句中的代码块。如果布尔表达式的计算结果为**false** ,那么将执行'if'语句结束后(在结束大括号之后)的第一组代码。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								C编程语言**_将任何非零和非空值假定为true_** ,如果它**_为零或null,则将其假定为false_**值。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 句法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								if(boolean_expression) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when boolean_expression is true 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 例
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int a = 100; 
							 | 
						|||
| 
								 | 
							
								 if(a < 200) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is less than 200\n" ); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 结果
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`a is less than 200`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 2.如果......其他声明
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								如果布尔表达式的计算结果为**true** ,则执行if块,否则执行else块。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 句法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								if(boolean_expression) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when boolean_expression is true 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when boolean_expression is false 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 例
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int a = 300; 
							 | 
						|||
| 
								 | 
							
								 if(a < 200) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is less than 200\n" ); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is more than 200\n"); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 结果
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`a is more than 200`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 3\. if ... else if else注释
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								当使用if ... else if..else语句时,要记住几点 -
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   一个**if**可以有**0或者其他**的, **如果是的话** ,它**必须在其他任何地方之后** 。
							 | 
						|||
| 
								 | 
							
								*   一个**if**可以**有零到多个,如果**是,他们**必须在其他之前** 。
							 | 
						|||
| 
								 | 
							
								*   一旦**else**成功,其余的其他if或者其他都将被测试。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 句法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								if(boolean_expression_1) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when boolean_expression_1 is true 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else if(boolean_expression_2) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when boolean_expression_1 is false and boolean_expression_2 is true 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else if(boolean_expression_3) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when both boolean_expression_1 and boolean_expression_2 are false and boolean_expression_3 is true 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Block of Statements executed when all boolean_expression_1, boolean_expression_2 and boolean_expression_3 are false 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 例
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int a = 300; 
							 | 
						|||
| 
								 | 
							
								 if(a == 100) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is equal to 100\n" ); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else if(a == 200) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is equal to 200\n"); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else if(a == 300) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is equal to 300\n"); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								 else 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is more than 300\n"); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 结果
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								`a is equal to 300`
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 4.嵌套if语句
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								嵌套if-else语句在C编程中总是合法的,这意味着你可以在另一个if或else if语句中使用if或else if语句。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 句法
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								if(boolean_expression_1) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    //Executed when boolean_expression_1 is true 
							 | 
						|||
| 
								 | 
							
								    if(boolean_expression_2) 
							 | 
						|||
| 
								 | 
							
								    { 
							 | 
						|||
| 
								 | 
							
								      //Executed when both boolean_expression_1 and boolean_expression_2 are true 
							 | 
						|||
| 
								 | 
							
								    } 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 例
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int a = 100; 
							 | 
						|||
| 
								 | 
							
								 int b = 200; 
							 | 
						|||
| 
								 | 
							
								 if(a == 100) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    printf("a is equal to 100\n" ); 
							 | 
						|||
| 
								 | 
							
								    if(b == 200) 
							 | 
						|||
| 
								 | 
							
								    { 
							 | 
						|||
| 
								 | 
							
								        printf("b is equal to 200\n"); 
							 | 
						|||
| 
								 | 
							
								    } 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 结果
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								a is equal to 100 
							 | 
						|||
| 
								 | 
							
								 b is equal to 200 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 5\. Switch Case Statement
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								如果... else(并非总是),switch语句通常比嵌套更快。此外,switch语句的语法更清晰,易于理解。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 开关盒的语法
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								switch (n) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								    case constant1: 
							 | 
						|||
| 
								 | 
							
								        // code to be executed if n is equal to constant1; 
							 | 
						|||
| 
								 | 
							
								        break; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    case constant2: 
							 | 
						|||
| 
								 | 
							
								        // code to be executed if n is equal to constant2; 
							 | 
						|||
| 
								 | 
							
								        break; 
							 | 
						|||
| 
								 | 
							
								        . 
							 | 
						|||
| 
								 | 
							
								        . 
							 | 
						|||
| 
								 | 
							
								        . 
							 | 
						|||
| 
								 | 
							
								    default: 
							 | 
						|||
| 
								 | 
							
								        // code to be executed if n doesn't match any constant 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								当找到与switch表达式匹配的case常量时,程序的控制将传递给与该case相关联的代码块。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								在上面的伪代码中,假设n的值等于constant2。编译器将执行与case语句关联的代码块,直到switch块结束,或者直到遇到break语句。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								break语句用于防止代码进入下一种情况。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 例:
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								// Program to create a simple calculator 
							 | 
						|||
| 
								 | 
							
								 // Performs addition, subtraction, multiplication or division depending the input from user 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 # include <stdio.h> 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								 int main() 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    char operator; 
							 | 
						|||
| 
								 | 
							
								    double firstNumber,secondNumber; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    printf("Enter an operator (+, -, *, /): "); 
							 | 
						|||
| 
								 | 
							
								    scanf("%c", &operator); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    printf("Enter two operands: "); 
							 | 
						|||
| 
								 | 
							
								    scanf("%lf %lf",&firstNumber, &secondNumber); 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    switch(operator) 
							 | 
						|||
| 
								 | 
							
								    { 
							 | 
						|||
| 
								 | 
							
								        case '+': 
							 | 
						|||
| 
								 | 
							
								            printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber); 
							 | 
						|||
| 
								 | 
							
								            break; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								        case '-': 
							 | 
						|||
| 
								 | 
							
								            printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber); 
							 | 
						|||
| 
								 | 
							
								            break; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								        case '*': 
							 | 
						|||
| 
								 | 
							
								            printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber); 
							 | 
						|||
| 
								 | 
							
								            break; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								        case '/': 
							 | 
						|||
| 
								 | 
							
								            printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/secondNumber); 
							 | 
						|||
| 
								 | 
							
								            break; 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								        // operator is doesn't match any case constant (+, -, *, /) 
							 | 
						|||
| 
								 | 
							
								        default: 
							 | 
						|||
| 
								 | 
							
								            printf("Error! operator is not correct"); 
							 | 
						|||
| 
								 | 
							
								    } 
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								    return 0; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 产量
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								Enter an operator (+, -, *,): - 
							 | 
						|||
| 
								 | 
							
								 Enter two operands: 32.5 
							 | 
						|||
| 
								 | 
							
								 12.4 
							 | 
						|||
| 
								 | 
							
								 32.5 - 12.4 = 20.1 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								用户输入的“ - ”运算符存储在运算符变量中。并且,两个操作数32.5和12.4分别存储在变量firstNumber和secondNumber中。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								然后,程序的控制跳转到
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber); 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								最后,break语句结束switch语句。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								如果未使用break语句,则执行正确大小写之后的所有情况。
							 |