1. 程式人生 > >淺談C語言中的布林(bool)型別

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

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

/**********************************************************************************************************************


地址:http://niehan.blog.techweb.com.cn/archives/228.html

*********************************************************************************************************************/

  我們知道在C++裡有專門的bool型別,用來表示真或假。但是在C語言裡沒有這樣的型別(至少我是一直這麼認為的),表示式的值0為假,非0為真。所以條件判斷語句( if(…)、while(…) )非常靈活,甚至一個指標型別都可以是條件表示式。

  為了使程式更清晰,我們常常會給出如下的巨集定義:

  typedef int BOOL;

  #define TRUE 1

  #define FALSE 0

  這是最常見的寫法,能被任何C語言編譯器認可。

  今天我在一段程式裡看見這麼一行 #include ,這個陌生的標頭檔案還以std打頭而且還和bool有關,引起了我的警覺,立刻百度之。得知這是C99標準新增的標頭檔案,意在引入bool型別,使之和C++相容。隨後我看了一下這個標頭檔案的原始碼,內容如下:

  /*

  * ISO C Standard: 7.16 Boolean type and values

  */

  #ifndef _STDBOOL_H

  #define _STDBOOL_H

  #ifndef __cplusplus

  #define bool _Bool

  #define true 1

  #define false 0

  #else /* __cplusplus */

  /* Supporting in C++ is a GCC extension. */

  #define _Bool bool

  #define bool bool

  #define false false

  #define true true

  #endif /* __cplusplus */

  /* Signal that all the definitions are present. */

  #define __bool_true_false_are_defined 1

  #endif /* stdbool.h */

  這個標頭檔案很短,而且也很明瞭,不過我對_Bool這個型別產生的興趣。又一翻百度,發現這是C99標準引入的新的關鍵字。對,是關鍵字,而不是巨集定義,也不是typedef。通過sizeof(_Bool);得知這個型別佔1個位元組,而且無論給這個型別的變數賦任何非0整數值,其值都是1,這也說明了他不是其他整數型別的別名。

  好了,其實說白了,C語言不是沒有布林型別,只能說在C99標準之前沒有。現在只要在原始檔中包含stdbool.h這個標頭檔案,就可以在C語言裡像C++那樣使用bool型別了。



           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述