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