經常我們會在一些競技類知識型比賽中看到這樣的題型:對下列問題的回答只能說:是或否、對和錯等;在現實生活中,也有很多選擇項是二者選其一,比如:婚否等。
像這種是否、對錯,在計算機程式語言中,對應的就是一種真假判斷。這樣一種表示真假的數據類型,就是布爾(bool)類型。
布爾(bool)類型,只有兩個結果,即真或假。在C++中,「真」就是一種肯定的回答(肯定的、對的、是的、成立的),用單詞true或數字1表示;「假」則是一種否定的回答(否定的、錯的、不是的、不成立的),用單詞false或數字0表示。
布爾類型的結果一般出現在關係運算符、邏輯運算符、以及if條件表達式和while循環條件中。比如:
01關係運算符
C++程式語言中,有一種運算符叫關係運算符,表示兩個操作數或兩個表達式的大小、相等關係。關係運算符有六種判斷關係:大於(>)、大於等於(>=)、小於(<)、小於等於(<=)、等於(==)、不等於(!=)。其表達式最後計算出的結果就是布爾類型。比如:
int a,b; //聲明兩個整型變量,變量名為a和ba=2; //變量a的初始值為2b=3; //變量b的初始值為3cout<<(a==b) //輸出判斷a是否等於b,最後輸出就是bool類型的結果
由於a和b的初始值不相同,所以a等不等於b呢?答案是否定的,所以C++中最後計算出來的結果為0,意思就是假的、不成立 。
再比如:
bool is_bigger;is_bigger=3>5;cout<<is_bigger<<endl;
第二行:「3>5」就是一個關係表達式,計算機計算出的結果賦值給布爾類型is_bigger的變量。因為3>5是否定的,不成立的,所以就是假的結果,is_bigger得到的結果也是為0的。
02邏輯運算符
C++中還有一種邏輯運算符,可以關聯多個表達式,來構成一個更複雜的計算式子。這種運算符有三個符號:邏輯與(&&)、邏輯或(||)和邏輯非(!)。
邏輯與的意思是關聯的條件必須同時滿足(成立),其結果才會滿足(成立)。比如:我要嫁給你的條件是必須有車有房(有車 && 有房),少一樣都不行。
邏輯或的意思是關聯的條件只有一樣滿足(成立),其結果就滿足(成立)。比如:我要嫁給你的條件是或者有車或者有房(有車 ||有房),滿足一樣就行,沒有那麼挑。
邏輯非的意思就是取自反義詞。比如:非男即女(!男:在男的前面加一個驚嘆號,就表示不是男的。不是男的那肯定就是女的。),非女即男。
舉一個經典的案例:判斷閏年的條件。能夠被4整除但不能被100整除,或者能夠被400整除的年份就是閏年。如何用表達式表示出來呢?
int year,result;cin>>year;result=year%4==0 && year%100!=0 || year%400==0;cout<<result<<endl;
第三行代碼,這裡就運用了多種類型的運算符,只要含有邏輯或關係運算符,其結果就是布爾類型,要麼是0,要麼是1;0代表就是假的條件,不是閏年;1代表就是真的結果,是閏年。
03條件結構
在C++的條件結構中,條件表達式最後得出的結果也是一個布爾類型的值。如果為真,則執行if大括號裡面的內容,否則不執行,或執行else裡面的內容。
比如:判斷一個數是否為偶數
int number;cin>>number;if(number%2==0){cout<<number<<」 is even.」<<endl;}else{cout<<number<<」is odd.」<<endl;}
除了上述的三種情況,在循環結構的條件判斷中,其運算的結果也是布爾類型的值。布爾就是表示真或假的一種數據類型。非常簡單。