本節(jié)講解C/C++/Java/Python中的布爾類(lèi)型。
一、C語(yǔ)言
C語(yǔ)言中沒(méi)有布爾類(lèi)型,判斷時(shí) ,0為假,非0為真。
二、C++
C++的bool是布爾類(lèi)型,取值為true或false
程序:
#include <iostream>
using namespace std;
int main()
{
bool a = true;
bool b = false;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "Size of bool is " << sizeof(bool) << " Byte" << endl;
return 0;
}
運(yùn)行結(jié)果:
a = 1
b = 0
Size of bool is 1 Byte
三、Java
Java中的bool是布爾類(lèi)型,取值為true或false
程序:
class BooleanTest {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("2 > 1 is " + (2 > 1));
}
}
運(yùn)行結(jié)果:
a = true
b = false
2 > 1 is true
說(shuō)明:
Java中的布爾數(shù)據(jù)類(lèi)型只有兩個(gè)可能的值:true和false。但是它的“大小”并不是精確定義的,1個(gè)字節(jié)、4個(gè)字節(jié)都是有可能的。
理由來(lái)源是《Java虛擬機(jī)規(guī)范》一書(shū)中的描述:“雖然定義了boolean這種數(shù)據(jù)類(lèi)型,但是只對(duì)它提供了非常有限的支持。在Java虛擬機(jī)中沒(méi)有任何供boolean值專(zhuān)用的字節(jié)碼指令,Java語(yǔ)言表達(dá)式所操作的boolean值,在編譯之后都使用Java虛擬機(jī)中的int數(shù)據(jù)類(lèi)型來(lái)代替,而boolean數(shù)組將會(huì)被編碼成Java虛擬機(jī)的byte數(shù)組,每個(gè)元素boolean元素占8位”。這樣我們可以得出boolean類(lèi)型占了單獨(dú)使用是4個(gè)字節(jié),在數(shù)組中又是1個(gè)字節(jié)。
虛擬機(jī)為什么要用int來(lái)代替boolean呢?為什么不用byte或short,這樣不是更節(jié)省內(nèi)存空間嗎。大多數(shù)人都會(huì)很自然的這樣去想,我同樣也有這個(gè)疑問(wèn),經(jīng)過(guò)查閱資料發(fā)現(xiàn),使用int的原因是,對(duì)于當(dāng)下32位的處理器(CPU)來(lái)說(shuō),一次處理數(shù)據(jù)是32位,具有高效存取的特點(diǎn)。所以這其實(shí)是運(yùn)算效率和存儲(chǔ)空間之間的博弈,兩者都非常的重要。
四、Python
程序:
a = True
print(a)
b = False
print(b)
print(1 > 2)
運(yùn)行結(jié)果:

注意:
python中不能顯示寫(xiě)出數(shù)據(jù)類(lèi)型,否則會(huì)報(bào)錯(cuò)。
比如在C/C++/Java中,你可以寫(xiě)int a = 10;
但是在Python中,寫(xiě)int a = 10會(huì)導(dǎo)致編譯錯(cuò)誤,只能寫(xiě)成a = 10
加入少兒信息學(xué)奧賽學(xué)習(xí)QQ群請(qǐng)掃左側(cè)二維碼,關(guān)注微信公眾號(hào)請(qǐng)掃右側(cè)二維碼
QQ群和公眾號(hào).png
