C 中的bool型別

2021-09-25 05:01:40 字數 928 閱讀 1324

學過c語言的程式設計師應該清楚,在c語言中,是沒有bool這個基礎型別的。在c語言中,當我們要表示真或假的時候,都是定義乙個非bool型別來使用的。

在c++中,加入了布林bool這種基礎的型別,用true和false來表示真或者假,也可以用非0值來表示真,用0來表示假。在c++中,雖然布林型別只表示true和false,看起來好像可以用乙個位來儲存布林型別的變數,但其實,布林型別在c++中是占用乙個位元組的。

答案是可以的。

布林型別雖然只表示真或者假,但是它在儲存空間是占用乙個位元組的,所以我們也可以對布林型別進行運算,但是它還是遵循非0值為真,0值為假這條規則。例如下面的**:

bool b =0;

printf

("b = %d\n"

,b);

b++;

printf

("b = %d\n"

,b);

b = b -3;

printf

("b = %d\n"

,b);

用c++編譯器編譯執行後得到的是:

b = 0

b = 1

b = 1

從上面我們也可以看到,布林型別作為c++中的一種基礎型別,是完全可以對布林型別進行運算的,只不過最後遵循非0值為真,0值為假這條規則。

既然布林型別作為c++中的一種基本資料型別,那麼可以

定義bool型別的全域性變數

定義bool型別的常量

定義bool型別的指標

定義bool型別的陣列

在c語言中,沒有bool這種型別,但是在c++中,把bool當做一種基本的資料型別,既然是資料型別,那麼久可以對bool型別的變數進行運算,只不過最後遵循非0值為真,0值為假這條規則。同時,bool型別作為一種基本的資料型別,也可以用來定義常量,全域性變數,指標還有陣列。

c 的bool型別與c 的bool型別

本來有點懶,不過還是記一下。使用hpsocket專案碰到c 呼叫結果不符合預期,也提了這個問題。最終發現是c 中的bool型別為1 byte,而c 中採用4 bytes導致,需要在dllimport時,使用 dllimport hpsocket dll path,charset charset.an...

c 中istream型別到bool型別的隱式轉換

事情的起因是見到了這種用法 while cin m n m n 現在分析一下,cin m n返回的是乙個對istream型別的引用,然後這個返回值又與m做 運算。已知這種寫法是合法的。可能有兩種情況 1 運算子被過載,允許接收istream型別的值。2 istream類中有成員能將istream型別...

C 中BOOL 與bool的區別

bool 定義 typedef int bool define false 0 define true 1 不能完全過載,如 file.h void f int ok void f bool ok file.cpp void f int ok void f bool 錯誤,重新宣告 而bool fa...