[討論] Casting

看板C_and_CPP (C/C++)作者 (m e l o)時間11年前 (2014/09/15 14:42), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
請教各位大大一個有關casting的問題 aData8 = *(volatile UINT8 *)(PCH_LPC_RCBA_BASE_ADDRESS + R_PCH_RCRB_BUC); 有一敘述如上: 假設(PCH_LPC.... + R_PCH_RCRB_BUC) = 0x80000000 volatile也暫時don't care 我的解讀是 0x80000000 被casting成UINT8的address,然後再被取值 但如果先被casting成UINT8的話,不就變成0x00被取值 應該要寫成 *(UINT32 *)(PCH.... + _BUC); 這樣才會取到(PCH.... +_BUC)的值,這樣才對吧? 請各位大大解惑,謝謝 -- 「會被嘲笑的夢想,才有實現的價值。」 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.108.38 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1410763321.A.7C2.html

09/15 14:44, , 1F
UINT8的位址還是32bit
09/15 14:44, 1F

09/15 14:45, , 2F
(UINT8*)1234; 和(UINT8)1234;是不同的東西
09/15 14:45, 2F

09/15 14:53, , 3F
請教a大,你是說那行並不是轉行成8bit的address?
09/15 14:53, 3F

09/15 16:36, , 4F
sizeof(UINT8*) 和 sizeof(int*) 值基本上是一樣的
09/15 16:36, 4F

09/15 16:37, , 5F
在這裏兩者和 sizeof(UINT8) 不同
09/15 16:37, 5F
文章代碼(AID): #1K5eevV2 (C_and_CPP)
文章代碼(AID): #1K5eevV2 (C_and_CPP)