| title |
|---|
C / Data Type |
C / Data Type
-
C, C++, Objective-C, AWK - Boolean data type - Wikipedia
- C 最早在 1972 年的實作並未提供 boolean type,當時普遍的做法是用
int來表示 -- comparison operator (>、==等) 會傳回0(false) 或1(true),還有 logical operator (&&、||、!等)、condition-testing statement (if、while等) 會將 0 視為 false,其餘 non-zero 都視為 true。 - ANSI C (1989) 推出後,開始有人用
enum來定義自己的 boolean type 以提昇程式碼的可讀性,但 enum 實質上等同於 integer。 - 直到 C99 提供標準的 boolean type --
_Bool,只要引用stdbool.h就可以用bool、true、false,它保證任何兩個 true value 等同?? (這在過去是辦不到的)。不過 boolean 還是可以當 integer 用,也就是 "boolean values are just integers" 的概念在不同版本的 C 都通用。
- C 最早在 1972 年的實作並未提供 boolean type,當時普遍的做法是用
-
Using boolean values in C - Stack Overflow #ril
-
neuromancer: C 沒有 built-in boolean type,要怎麼在 C 裡實現? AraK: 至少在最新的標準裡有。
-
Andreas Bonini: 有 4 種選擇,基本上 Option 1 ~ 3 等效,但作者偏好 Option 2 & 3,因為沒用到
#define。- Option 1 -
typedef int bool;搭配#define true 1與#define false 0。 - Option 2 -
typedef int bool;搭配enum { false, true };(內部數值由 0 起算?) - Option 3 -
typedef enum { false, true } bool;不知道怎麼選就用這個 - Option 4 -
#include <stdbool.h>C99 才標準化,如果條件允許就用這個。
- Option 1 -
-
Dale Hagglund:
!0的結果並不是 1,不過重點是0是唯一的 false,其他 non-zero 都是 true,所以直接比較 true/false 有點危險。
-