C 語言中的 if 語句
這節(jié)課我們來學(xué)習(xí)下程序中另外一個(gè)非常重要的語句:if。
1. 語法
if (判斷條件布爾運(yùn)算)
{
條件成立后運(yùn)行的語句
}
這里的條件判斷采用了布爾運(yùn)算,也就是真值和假值兩種情況。當(dāng) if 后面放入的條件判斷語句的執(zhí)行最終結(jié)果為真的時(shí)候,就會(huì)執(zhí)行花括號(hào)中的語句,如果條件語句最終的結(jié)果為假,那么就不會(huì)執(zhí)行花括號(hào) 中的語句,程序會(huì)跳過花括號(hào)中的代碼段,繼續(xù)執(zhí)行后面的代碼。
這里給出了真值表,以供大家參考。
A | B | A && B(A與B) | A || B(A或B) | !A(非A) | !B非B) |
---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
這個(gè)表格給出了基本的條件判斷中條件成立情況。
2. 執(zhí)行過程
3. 場(chǎng)景
在程序中需要進(jìn)行條件判斷并根據(jù)條件需要執(zhí)行不同分支語句的時(shí)候就需要判斷語句。
3.1 實(shí)例
實(shí)例中的程序都是可以運(yùn)行。大家可以實(shí)際動(dòng)手來試試。
這里我們準(zhǔn)備一個(gè)猜數(shù)字的小游戲,以幫助大家來理解條件語句。只有當(dāng)數(shù)字等于 2 的時(shí)候,屏幕上才會(huì)顯示”你猜對(duì)了“的字樣。
#include <stdio.h>
int main()
{
int a;
puts("請(qǐng)你猜數(shù)字,請(qǐng)輸入0-9的數(shù)字"); scanf("%i",&a);
if (a==2)
{
puts("你猜對(duì)了");
}
return 0;
}
這是在 gcc version 8.3.0 上執(zhí)行的結(jié)果。
#include <stdio.h>
int main()
{
int a;
puts("請(qǐng)你猜數(shù)字,請(qǐng)輸入0-9的數(shù)字"); scanf("%i",&a);
if (a<3 && a>1)
{
puts("你猜對(duì)了");
}
return 0;
}
這是運(yùn)行結(jié)果,與上面實(shí)現(xiàn)了同樣的功能,只不過這里用了布爾運(yùn)算。當(dāng)兩個(gè)條件同時(shí)都成立的時(shí)候才 可以運(yùn)行條件語句中的內(nèi)容。
#include <stdio.h>
int main()
{
int a;
puts("請(qǐng)你猜數(shù)字,請(qǐng)輸入0-9的數(shù)字"); scanf("%i",&a);
if (a<3 || a>1)
{
puts("你猜對(duì)了");
}
return 0;
}
這個(gè)時(shí)候,無論輸入什么數(shù)字,都會(huì)顯示結(jié)果正確。因?yàn)檫@時(shí)的判斷條件是 a 小于 3 或者 a 大于 1 的時(shí)候,條件都是成立的。這個(gè)時(shí)候如果我們的預(yù)期還是只輸出 2 ,那么這個(gè)條件判斷就是錯(cuò)的。
3.2 提示
在使用條件判斷中,一定要注意使用條件判斷符號(hào),也就是 == ,而不是賦值符號(hào) = , 為了防止出現(xiàn)這個(gè)錯(cuò)誤,也可以將數(shù)值與變量位置互換反過來寫。寫成 5==a
4. 小結(jié)
作為程序組成的基本構(gòu)建之一的條件語句,是可以通過條件的設(shè)立與判斷來改變程序的走向。這就如同 在一個(gè)十字路口,你可以根據(jù)自己的既定目標(biāo)選擇通過十字路口的方向,以此來最終到達(dá)自己的目的地。
雖然條件語句構(gòu)成簡(jiǎn)單,但是要注意的是這里會(huì)經(jīng)常引發(fā)隱蔽的錯(cuò)誤。比如將條件判斷寫成了賦值。布 爾判斷的循序與我們預(yù)想的不一樣等等。