程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言中有沒有bool類型?

C語言中有沒有bool類型?

編輯:關於C

問題
首先請大家回想一下,在你們所編寫的C程序中,是否使用過bool(布爾)類型?bool類型一般用來表示真假,是程序設計中一個很基本的數據類型。但是,C語言裡面並不直接支持bool類型。一些初學C語言,或者是對C語言不是很精通的朋友肯定覺得很奇怪,為什麼在C++,JAVA等語言裡使用的bool類型,在C語言裡無法使用了呢?

問題解析
bool類型的變量,為0時表示為假,為非0時表示為真。但是原始C語言中並不支持bool類型,若需要使用bool類型可以借用int類型自己定義一下,例如:

[cpp]
typedef int bool; 
#define TRUE 1 
#define FALSE 0 

然後就可以在程序中使用bool類型了。用32位的int類型來當bool使用,這樣無疑浪費了內存資源,因此對於內存敏感的程序中可以使用char來定義bool類型:


[cpp] 
typedef char bool; 
#define TRUE 1 
#define FALSE 0 

進一步討論
C語言並非沒有bool類型,而是在C99標准之前沒有。C99標准中新增的頭文件中引入了bool類型,與C++中的bool兼容。該頭文件為stdbool.h,其源碼如下所示:


[cpp] 
#ifndef _STDBOOL_H 
#define _STDBOOL_H 
 
#ifndef __cplusplus 
 
#define bool    _Bool 
#define true    1 
#define false   0 
 
#else /* __cplusplus */ 
 
/* Supporting <stdbool.h> 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標准為bool類型引入的新的關鍵字,sizeof(_Bool)的值為1,表面其為bool類型。既然為bool類型,那麼0表示為假,其他任何值都表示為真,我們可以做一個小實驗來測試一下:
[cpp] 
bool bb=10; 
bool aa=0; 
printf(" %d %d  \n",bb,aa); 

輸出的結果為1和0,這表明bool類型變量賦值為非0值得時候,只存儲其值為1。


最後,當需要使用bool類型時,推薦使用C99標准的bool類型而不是自己去定義,引入頭文件<stdbool.h>即可,該頭文件位於

/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdbool.h(以我自己的Linux系統為例)。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved