C語言基礎之分支陳述句
- 分支陳述句概述
- if陳述句
- if陳述句的語法結構
- switch陳述句
- switch陳述句的語法結構
分支陳述句概述
C語言中,代碼分為順序結構,選擇結構和回圈結構,選擇結構對應的即為分支陳述句,
分支陳述句中最主要的陳述句如下:
- if陳述句
- switch陳述句
if陳述句
if陳述句是C語言中撰寫代碼最常用的陳述句之一,常用來判斷是否滿足條件,進而執行后續的代碼,
首先,在介紹if陳述句前先要了解一個知識點——C語言中,0表示為假,非0表示為真(而不只是1代表真),
if陳述句的語法結構
1. 單if結構:
if (運算式)
陳述句;
2. if - else結構(單分支):
if (運算式)
陳述句;
else
陳述句;
3. 多分支結構:
if (運算式)
陳述句;
else if (運算式)
陳述句;
……
else
陳述句;
當運算式判斷為真則執行后續的代碼,為假則跳過該運算式所控制下的代碼執行后面的代碼,
重點說明:
- if陳述句中,如果沒有用到代碼塊符號({})時,if陳述句后只能控制一條陳述句,如果有多條陳述句,則必須使用代碼塊符號({}),
int main()
{
if(運算式)
{
陳述句串列1;
}
else
{
陳述句串列2;
}
return 0;
}
- 當代碼較復雜時,一段代碼中出現多次if-else陳述句時,else陳述句與最近的if陳述句相匹配,而不是看縮進,以下為一個錯誤示例:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
由于else與離它本身最近的if相匹配,顧此處的else的條件為b不等于2時,輸出“haha”,而第一個if的條件不成立,所以不能進入到后續的代碼,故此處無任何輸出,
附上一個簡單的if-else陳述句的代碼
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age >= 18 && age < 40)
printf("青年\n");
else if (age >= 40 && age < 60)
printf("壯年\n");
else if (age >= 60 && age < 90)
printf("老年\n");
else
printf("老壽星\n");
return 0;
}
switch陳述句
switch陳述句相較于if陳述句來說在特殊情況下可以簡化代碼,使代碼更加簡單,可讀性更強,常常用在分支多的情況,
switch陳述句的語法結構
switch(整型運算式)
{
case 整形常量運算式:
陳述句;
case 整形常量運算式:
陳述句;
......
default:
陳述句;
}
- switch后跟的運算式必須是整型、
- case后面必須跟整形常量,
- default:當 switch 運算式的值并不匹配所有 case 標簽的值時,這個 default 子句后面的陳述句就會執行,所以,每個switch陳述句中只能出現一條default子句,
- switch-case陳述句常和break陳述句搭配使用,如果不使用break陳述句,當運算式滿足一個條件時,編譯器會先執行此條件下的代碼,接著執行后續所有條件下的代碼,也就是說會把滿足某個條件后的所有代碼都執行完,舉例:
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
首先假設此處的代碼中都刪掉break陳述句:
當day輸入為5時,將會在執行完printf(“星期五\n”)后不會跳出switch陳述句,而是繼續執行后續所有的代碼,列印出“星期五、星期六、星期天”,
再看此代碼:break陳述句本身的意思為在此處后跳出回圈,不再執行回圈中后續的代碼,因此在switch陳述句中,當執行完break陳述句時,直接跳出switch陳述句,不再執行switch中的代碼,故此處day輸入為5時,執行完printf(“星期五\n”)后跳出switch陳述句,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337754.html
標籤:其他
