2011-01-20 102 views
3

由於C沒有布爾類型的功能,我怎麼可以用C寫一個函數是這樣的:C編寫,它返回一個布爾

bool checkNumber() 
{ 
    return false; 
} 
+1

#define false 0 #define true 1如果它讓你感覺更多在家 – 2011-01-20 21:49:26

回答

17

bool類型在<stdbool.h>標頭中定義,並且在其他情況下可以使用名稱_Bool(假設您使用的是C99編譯器)。如果你沒有C99,你總是可以創造自己的布爾類型是這樣的:

typedef enum {false, true} bool; 
+2

值得在`#if!defined __cplusplus` ...`#endif`中包裝這個互操作性。 – Clifford 2011-01-20 23:05:54

+0

謝謝。它工作得很好! – olidev 2011-01-22 09:24:24

9

int常用在C布爾,至少在C99之前。零意味着虛假,非零意味着真實。

+0

確實 - `int checkNumber(void){return 0; }`會是慣用的C. – caf 2011-01-20 23:14:58

1

您可以用定義來避免使用int和1和0直接布爾邏輯。

#define BOOL char 
#define TRUE 1 
#define FALSE 0 

我選擇了焦炭的BOOL,因爲它如果不使用C99,並確定你需要添加自己的布爾類型只有1個字節,而不是4(對於大多數系統)

1

,然後確保你給它自己的名字。 使用'bool'或'BOOL'只會讓您在添加第三方庫時遇到麻煩。 唯一的例外是使用的事實上的標準:

#define BOOL int 
#define TRUE 1 
#define FALSE 0 

但確保你的#ifndef包裝這些。但請注意,有些庫確實使用'char'作爲BOOL。 如果您來自C++背景,請考慮您是否希望與C++進行互操作。