[問題] C 判斷式的寫法

看板C_and_CPP (C/C++)作者 (梟仔)時間12年前 (2013/12/31 12:53), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/3 (看更多)
小弟最近在寫TI DSP 2808的晶片程式,遇到如下問題想請教各位 struct 16bits { unsigned int cyan :1; //bit 0 unsigned int yellow :1; //bit 1 ... unsigned int black :1; //bit 15 }; union colorData { unsigned int colorBuf; struct 16bits colorbits; }; ------------------------------------------------------ union colorData myColor; dosomething... dosomething... dosomething... if (myColor.colorBuf & 0x0003) <==== { printf("XDDDD"); } ------------------------------------------------------- 想請教大家一下,若是我以後想修改最上面結構bit的位置, 譬如bit0跟bit15互換,但又不想每次修改的時候 都去修改箭頭所指的if判斷式,除了下列 if (myColor.colorbits.cyan || myColor.colorbits.yellow) 這樣寫以外,還有什麼其他的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.143.136.88

12/31 14:33, , 1F
兩個if都怪怪的. 第一個if是bit0或bit1不為0,其它bits隨便;
12/31 14:33, 1F

12/31 14:34, , 2F
第二個if是cyan和yellow都不為0,其它顏色隨便...
12/31 14:34, 2F

12/31 14:36, , 3F
問題就是, 如果有個red(或red的bit)不為0, 還算是green嗎?
12/31 14:36, 3F

12/31 14:39, , 4F
注意一下, 兩個 if 不等價, 上面是 "或", 下面是 "和" (且).
12/31 14:39, 4F

12/31 14:40, , 5F
感謝指正 第二個if裡面應該是 || 才對
12/31 14:40, 5F
※ 編輯: showken 來自: 223.143.136.88 (12/31 14:43)

12/31 14:42, , 6F
不過你這樣寫有什麼缺點? 字太多?
12/31 14:42, 6F

12/31 14:42, , 7F
如果是的話取個短一點的別名就好?
12/31 14:42, 7F

12/31 14:44, , 8F
對阿,缺點就是字太多Q_Q,因為實際上我的程式裡面
12/31 14:44, 8F

12/31 14:44, , 9F
可能會有十幾個bit要判斷
12/31 14:44, 9F

12/31 14:46, , 10F
看起來就很亂
12/31 14:46, 10F

12/31 16:09, , 11F
那麼, 原 PO 你的 printf("green"); 真是混淆視聽呀!! XD
12/31 16:09, 11F
※ 編輯: showken 來自: 223.143.136.88 (12/31 16:30)

12/31 16:30, , 12F
那我改一下好像比較好 ㄏㄏ
12/31 16:30, 12F
文章代碼(AID): #1Imat3tE (C_and_CPP)
文章代碼(AID): #1Imat3tE (C_and_CPP)