🍿個人主頁: 起名字真南
🧇個人專欄:【數據結構初階】 【C語言】
目錄
- 前言
- 1 if 語句
- 1.1 if
- 1.2 else
- 1.3 嵌套if
- 1.4 懸空else
前言
C語言是結構化的程序設計語言,這里的結構指的是順序結構、選擇結構、循環結構。
我們可以用if、switch實現分支結構,for、while、do while實現循環結構。
1 if 語句
1.1 if
if(表達式){語句}
表達式成立(為真),則執行語句,表達式不成立(為假),則語句不執行。
在C語言中 0 表示假,非 0 表示真。
例子:輸入一個整數判斷是否為偶數
#include<stdio.h>int main()
{int num = 26;if (num % 2 == 0){printf("偶數");}return 0;
}
1.2 else
else語句一般是和if語句一起使用
if(表達式){語句一}else{語句二}
上面的示例表示如果表達式成立則執行語句一,如果條件不成立則執行語句二。
一個if只對應一個else
例子:輸入一個整數判斷是奇數則輸出奇數,不是則輸出偶數。
#include<stdio.h>int main()
{int num = 0;scanf("%d", &num);if (num % 2 == 0){printf("偶數");}else{printf("奇數");}return 0;
}
if 和 else 都只能控制一條語句,如果想控制多條語句需要使用 { } 包含。
1.3 嵌套if
在 if else 語句中,else 可以與 另一個if 語句連用,構成多重判斷。
例子:要求輸入一個整數判斷是整數,負數,還是 0.
#include<stdio.h>int main()
{int num = 0;scanf("%d", &num);if (num > 0){printf("正數");}else if (num < 0){printf("負數");}else{printf("0");}return 0;
}
被紅色包圍在內的代碼就是嵌套在 else 子句中的,構成了嵌套 if 語句
1.4 懸空else
如果有多個 if else 語句,如果我們分不清那兩個是互相匹配的可以記住這句話:else 總是和最近的 if 匹配
例子:判斷輸出內容
int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}
如果第一次接觸代碼可能會認為 b==2 成立所以輸出hehe。或者因為 a不等于1 則輸出 haha。但是結果是什么都沒有輸出。
這就是懸空else問題:>如果有多個 if 和 else ,可以記住這樣一條規則:else 總是跟最近的 if 匹配。
上面的排版問題可能會認為else 和第一個對齊所以和第一個else匹配,讓我們想到如果第一個if的條件不成立就會執行else然后執行haha這條語句。但實際上else是和第二個if匹配的,這樣后面的if else語句都是嵌套在第一個if 語句中的,因為第一個語句不成立所以什么都不執行。
將上面的代碼進行修改后會更容易理解
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");elseprintf("haha\n");}return 0;
}
如果我們希望else和第一個if匹配也可以這樣改
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");}else{printf("haha\n");}return 0;
}
只要加上了大括號就可以是代碼的邏輯變得更加清晰,增加代碼的可讀性,所以為了培養成一個好習慣建議大家平常多注意添加大括號。