看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
CJHhelper:#define STATUS5 0x10 ? 0x16 11/28 18:34
CJHhelper:很漂亮的方式 11/28 18:36
DrStein:不懂樓上意思,0x16 不是 00010110嗎 11/28 18:41
angleevil:他是說你打錯字 11/28 18:42
angleevil:此方法很漂亮 11/28 18:44
DrStein:不懂,那裡打錯了,0x10是0001 0000啊 11/28 18:44
adxis:應該沒錯 +1 11/28 18:47
angleevil:喔,你沒錯.我忘記那是16進位的表示. 11/28 18:48
CJHhelper:我忘記是16進位了 sorry 11/28 18:49
gundan:好方法,推! 11/29 09:03