Re: [問題] 簡潔的boolean比較寫法?

看板C_and_CPP作者 (啤酒肚)時間14年前 (2011/11/28 18:33), 編輯推噓5(505)
留言10則, 5人參與, 最新討論串1/2 (看更多)
※ 引述《thanksgive (乾溫)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C++ : 問題(Question): : 我有五個bool變數, : 然後會根據變數來判斷分支 : 請問有比較簡潔的寫法嗎? : (比方類似linux那樣,用數字0~7代表三個布林變數狀態) #define STATUS1 0x01 #define STATUS2 0x02 #define STATUS3 0x04 #define STATUS4 0x08 #define STATUS5 0x10 #define IS_STATUS1_TRUE(BB) ( ((BB)>>0) &(0x01) ) #define IS_STATUS2_TRUE(BB) ( ((BB)>>1) &(0x01) ) #define IS_STATUS3_TRUE(BB) ( ((BB)>>2) &(0x01) ) #define IS_STATUS4_TRUE(BB) ( ((BB)>>3) &(0x01) ) #define IS_STATUS5_TRUE(BB) ( ((BB)>>4) &(0x01) ) #define MERGE_STATUS(AA, BB) ((AA) | (BB)) typedef unsigned char EightStatus; EightStatus sts; sts = MERGE_STATUS(STATUS3, STATUS4); if(IS_STATUS1_TRUE(sts)) { : : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.134.25

11/28 18:34, , 1F
#define STATUS5 0x10 ? 0x16
11/28 18:34, 1F

11/28 18:36, , 2F
很漂亮的方式
11/28 18:36, 2F

11/28 18:41, , 3F
不懂樓上意思,0x16 不是 00010110嗎
11/28 18:41, 3F

11/28 18:42, , 4F
他是說你打錯字
11/28 18:42, 4F

11/28 18:44, , 5F
此方法很漂亮
11/28 18:44, 5F

11/28 18:44, , 6F
不懂,那裡打錯了,0x10是0001 0000啊
11/28 18:44, 6F

11/28 18:47, , 7F
應該沒錯 +1
11/28 18:47, 7F

11/28 18:48, , 8F
喔,你沒錯.我忘記那是16進位的表示.
11/28 18:48, 8F

11/28 18:49, , 9F
我忘記是16進位了 sorry
11/28 18:49, 9F

11/29 09:03, , 10F
好方法,推!
11/29 09:03, 10F
文章代碼(AID): #1EqsDqVw (C_and_CPP)
文章代碼(AID): #1EqsDqVw (C_and_CPP)