學過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...