簡體   English   中英

當我們可以使用int時,為什么bool存在?

[英]Why does bool exist when we can use int?

這聽起來可能是一個非常愚蠢的問題。 但過去幾天一直困擾着我。 而且它不僅僅是關於C ++編程語言,因為我添加了它的標簽。 我的問題是。 計算機科學中,布爾(bool)數據類型只有兩個可能的值。 '對或錯'。 而且,在計算機科學中,1是真的,0是假的。 那么為什么布爾存在呢? 為什么我們不使用只返回兩個可能值的整數,例如1或0。

例如 :

bool mindExplosion = true; // true!
int mindExplosion = 1; // true!!
// or we can '#define true 1' and it's the same right?

我錯過了什么?

當我們可以使用int時,為什么bool存在?

好吧,你不需要像int那樣大的東西來表示兩個狀態,所以允許較小的類型來節省空間是有意義的

為什么我們不使用只返回兩個可能值的整數,例如1或0。

這正是bool的意思。 它是無符號整數類型,表示true(1)或false(0)。


為此設置特定類型的另一個好處是它表達意圖而無需任何文檔。 如果我們有一個像(警告,非常人為的例子)的功能

void output(T const & val, bool log)

很容易看到log是一個選項,如果我們傳遞false它就不會記錄。 如果它是

void output(T const & val, int log)

然后我們不確定它是做什么的。 是否要求日志級別? 是否記錄的標志? 別的什么?

我錯過了什么?

表現力。

當一個變量聲明int它可能只有0和1來使用 ,或者它可能擁有任何來自INT_MIN..INT_MAX

當一個變量被聲明為bool ,它被明確表示它將保存一個true / false值。

除此之外,這允許編譯器在你真正想要bool地方使用int時拋出警告,或者嘗試在bool存儲2 編譯器是你的朋友; 給它所有可能的提示,以便它可以告訴你代碼什么時候開始看起來很時髦。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM