[問題] #define的問題

看板C_and_CPP作者 (Poker Face)時間13年前 (2011/09/16 16:12), 編輯推噓0(0025)
留言25則, 4人參與, 最新討論串1/2 (看更多)
開發平台(Platform): gcc 問題(Question): 目前情況是我有8個#define #define A1 '1' #define A2 '2' #define A3 '3' #define A4 '4' #define A5 '5' #define A6 '6' #define A7 '7' #define A8 '8' 但是我想要改一個做法,透過一個#define INPUT #define INPUT 0x12345678 然後這8個#define可以從INPUT裡面取得上面我想要的結果 我有想過一個方法 但是失敗了 #define A1 (((INPUT>>28)&0xf)+48) #define A2 (((INPUT>>24)&0xf)+48) #define A3 (((INPUT>>20)&0xf)+48) #define A4 (((INPUT>>16)&0xf)+48) #define A5 (((INPUT>>12)&0xf)+48) #define A6 (((INPUT>>8)&0xf)+48) #define A7 (((INPUT>>4)&0xf)+48) #define A8 (((INPUT)&0xf)+48) 所以想請問大家有沒有其他的方法, 謝謝. 餵入的資料(Input):#define 0x12345678 預期的正確結果(Expected Output): 可以和 #define A1 '1' #define A2 '2' #define A3 '3' #define A4 '4' #define A5 '5' #define A6 '6' #define A7 '7' #define A8 '8' 有一樣的效果 謝謝... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.216.66

09/17 00:23, , 1F
我覺得直接展可能好點耶..不然可能就這樣
09/17 00:23, 1F

09/17 00:23, , 2F

09/17 00:31, , 3F
我不能使用function 只能透過#define的方式達到
09/17 00:31, 3F

09/17 00:37, , 4F
搞不懂..你的做法那裏有問題 這樣不是可以的嘛
09/17 00:37, 4F

09/17 00:38, , 5F
09/17 00:38, 5F

09/17 00:38, , 6F
我是用 #define macro,不是用 function,不衝突吧 ?
09/17 00:38, 6F

09/17 00:40, , 7F
因為我的code是要寫在.h檔裡面, 用我的作法
09/17 00:40, 7F

09/17 00:41, , 8F
在公司的compiler 好像會錯..
09/17 00:41, 8F

09/17 00:41, , 9F
可能要試試看tropica172大大的作法...
09/17 00:41, 9F

09/17 00:43, , 10F
你的方法可能會卡在字集問題吧..如非 ASCII 字集時...
09/17 00:43, 10F

09/17 00:44, , 11F
非ASCII字集是甚麼 字元不是都是ASCII嗎?
09/17 00:44, 11F

09/17 00:45, , 12F
還有 tropica172大大 為什麼astring[]第一個字元是'x' ?
09/17 00:45, 12F

09/17 00:48, , 13F
那不影響macro,放'x'是沒用到,#define A0 'x' 之意.
09/17 00:48, 13F

09/17 00:50, , 14F
字集不是只有ASCII code,可參考 #1EPPULmS,連結翻到
09/17 00:50, 14F

09/17 00:51, , 15F
字元(二)編碼, 記得別用 IE 開,會沒辦法正常顯示。
09/17 00:51, 15F

09/17 00:52, , 16F
了解 順便問一下 BB[0] 放的是甚麼?
09/17 00:52, 16F

09/17 00:53, , 17F
BB[0] 是'x'嗎? 那BB[1] 是1嗎? BB[1]好像不是'1'
09/17 00:53, 17F

09/17 00:53, , 18F
BB[0]="x12345678"[0],這串字串取第0個索引,就是 'x'
09/17 00:53, 18F

09/17 00:54, , 19F
一樣,因為B0沒用到,所以放一個充數而已.
09/17 00:54, 19F

09/17 00:54, , 20F
瞭解了 T大是用字串 "x12345678"
09/17 00:54, 20F

09/17 00:54, , 21F
所以每一個都是字元..
09/17 00:54, 21F

09/17 00:55, , 22F
嗯,所以應該符合該環境之編碼方式,wide string可能再修
09/17 00:55, 22F

09/17 00:56, , 23F
感謝 我會回公司試試看T大的作法...
09/17 00:56, 23F

09/17 13:07, , 24F
把+48變成+'0'就好了呀-->避免character set
09/17 13:07, 24F

09/17 14:15, , 25F
firejox 大說的也是,熊熊沒想到.
09/17 14:15, 25F
文章代碼(AID): #1EStLmHV (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EStLmHV (C_and_CPP)