C 語言中的三目運算符
三目運算符是一種比較特殊的運算符,在我們前面的總體運算符介紹中,它被歸在了單獨的一類,也就是其它類別。這個運算符其實更像是一個簡化版的 if 語句,但是卻很簡潔強大。
1. 語法
語句 1 ? 語句 2: 語句 3
當語句 1 中條件成立的時候返回語句 2 的值,如果語句 1 中條件不成立,那么就返回語句 3 的值。
2. 應(yīng)用場景
在你需要進行一個條件判斷,有真假存在,且輸出語句真假各為一行的時候就可以使用這個三目運算了。
3. 實例
#include <stdio.h>
int main()
{
int x, y;
x = 0;
y = 10;
printf("%s\n", (x > y) ? "x > y" : "x < y");
return 0;
}
運行結(jié)果:
x < y
這個語句還可以配合賦值語句使用,給變量賦值。
#include <stdio.h>
int main()
{
int x, y, z;
x = 0;
y = 10;
z = (x > y) ? 20 : 50;
printf("%d\n", z);
return 0;
}
運行結(jié)果:
50
我們在講述 C 語言邏輯運算的時候知道了,在 C 語言中,即使引入了布爾類型,但是在使用 printf 函數(shù)輸出的時候,也是沒有辦法來直接輸出布爾類型的,只能是通過輸出整除類型來替代。如果我們想直接輸出布爾類型,可以通過編寫一個小的程序來擴展輸出,將 0 和 1 直接替換為 false 和 true 輸出。但是這樣做如果輸出次數(shù)很多是值得寫這樣一個程序的,要是只是像我們測試或者只是單次輸出,那么就顯得有些復(fù)雜了。這時候,我們這次介紹的三目運算符就有用武之地了。
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool x, y, z;
x = false;
y = true;
printf("x = %s; y = %s\n", x ? "true" : "false", y ? "true" : "false");
z = x || y;
printf("x || y = %s\n", z ? "true" : "false");
z = x && y;
printf("x && y = %s\n", z ? "true" : "false");
printf("!x = %s\n", !x ? "true" : "false");
printf("!y = %s\n", !y ? "true" : "false");
return 0;
}
運行結(jié)果:
x = false; y = true
x || y = true
x && y = false
!x = true
!y = false
在上面的代碼中每個 printf 函數(shù)都使用了本節(jié)介紹的三目運算符。其實就是在每個 printf 函數(shù)里都內(nèi)置了一個判斷語句。這個判斷語句會根據(jù)傳入的變量的值來進行判斷,分別用 true 和 false 來替換 1 和 0 ,這樣就可以實現(xiàn)布爾值的輸出了。
4. 小結(jié)
作為 C 語言運算符中比較特殊的一員,三目運算符起到的作用更像是條件句。但是卻更加的精簡。當條件成立與不成立的時候分別執(zhí)行冒號分隔前和冒號分隔后面的語句,而判斷的條件,則是由問號與后面的語句進行分隔。這個運算符經(jīng)常會嵌入語句中執(zhí)行。