C語言中的bool型別

2021-09-25 02:25:19 字數 817 閱讀 4524

之前一直都沒有注意到,最近在用c語言寫dsp演算法時,偶然間發現我函式中定義的bool型別的變數在vc6.0(我主要用它來檢查一下語法錯誤)中編譯居然報錯了,說是bool型別沒有定義。用了這麼久的c和c++了,一直覺得bool這種基本型別,應該是c語言內建的型別,怎麼會沒有定義呢?事實證明,我的想法完全錯誤了。

有了網路,一切問題都變得那麼容易了,我很容易地搜到了相關的解答。

c語言裡面是沒有bool(布林)型別的,c++裡面才有,這就是說,在c++裡面使用bool型別是沒有問題的。bool型別有只有兩個值:true =1 、false=0。

但是,c99標準裡面,又定義了bool型別變數。這時,只要引入標頭檔案 ,就能在c語言裡面正常使用bool型別。這點我在fedora9下驗證過了,它自帶的編譯器是 gcc 4.3.0,符合c99標準。但是在vc6.0中,會報找不到標頭檔案 stdbool.h 的錯誤,看來vc6.0確實比較老了。

所以,為了相容各種編譯器,還是自己巨集定義吧。^_^

#define bool char //巨集替換為char型別是因為char與bool都只佔乙個位元組,比較相似

#define ture 1

#define false 0

當然,巨集定義的bool與真實的關鍵字bool還是有差別的。關鍵字bool修飾的變數,無論賦予其任何非零值,其儲存的內容都是「00000001」,而巨集定義的bool所修飾的變數,其儲存的內容完全取決於我們賦的值。因此,當給巨集定義的bool修飾的變數賦值時,老老實實賦予true或false,條件判斷時也老老實實與true或false進行比較。

C語言中的Bool型別

在c99之前,c語言中沒有定義bool型別,但是在c99標準中將該型別新增了進來。首先來看看,c99中定義的bool型別如何使用。1.基於c99標準,如何定義乙個bool型別?有兩種方式 a.bool man 需要注意的是,雖然bool型別了,但是true和flase卻沒有定義,所以推薦用b方式 b...

C語言中的布林(bool)型別

想必很多初學者都曾遇到過在c程式中編寫bool型別變數結果編譯報錯的情況吧?我們知道在c 裡有專門的bool型別,用來表示真或假。但是在c語言裡沒有這樣的型別 我一直這麼認為 表示式的值0為假,非0為真。所以條件判斷語句非常靈活,甚至乙個指標型別都可以是條件表示式。為了使程式更清晰,我們常常會給出如...

C語言中有bool型別嗎?

之前一直都沒有注意到,最近在用c語言寫dsp演算法時,偶然間發現我函式中定義的bool型別的變數在vc6.0 我主要用它來檢查一下語法錯誤 中編譯居然報錯了,說是bool型別沒有定義。用了這麼久的c和c 了,一直覺得bool這種基本型別,應該是c語言內建的型別,怎麼會沒有定義呢?事實證明,我的想法完...