为什么它不是一个标准类型?我应该用#define或enum定义true和false值么?
1 回答

慕用4063026
TA貢獻195條經驗 獲得超115個贊
C?語言沒有提供標準的布爾類型,?部分因為選一個這樣的類型涉及最好由程序員決定的空間/時間折衷。(使用int?可能更快,?而使用char?可能更節(jié)省數(shù)據(jù)空間。然而,?如果需要和int?反復轉換,?那么小類型也可能生成更大或更慢的代碼。)使用#define?還是枚舉常數(shù)定義true/false?可以隨便,?無關大雅(參見問題2.16?和17.8)。使用以下任何一種形式
???#define?TRUE?1?#define?YES?1
???#define?FALSE?0?#define?NO?0
enum?bool?{false,?true};?enum?bool?{no,?yes};
或直接使用1?和0?,?只要在同一程序或項目中一致即可。如果你的調試器在查看變量的時候能夠顯示枚舉常量的名字,?可能使用枚舉更好。有些人更喜歡這樣的定義
???#define?TRUE?(1==1)
???#define?FALSE?(!TRUE)
或者定義這樣的“輔助”?宏
???#define?Istrue(e)?((e)?!=?0)
- 1 回答
- 0 關注
- 969 瀏覽
添加回答
舉報
0/150
提交
取消