[問題] 關於 casting (強制轉換)
小弟又來問基礎問題了 (掩面)
舉個例子
unsigned short s = 600; //0000 0010 0101 1000
unsigned char c = (unsigned char) s;
printf("char c = %d\n", c); //顯示截取到 0101 1000
char *ptrS = &s; //points to short s 但是大小改為char
printf("*ptrS = %d\n", *ptrS); //一樣是指到 0101 1000
我知道這看起來有點理所當然
也大概知道這應該跟作業系統的記憶體分配有關係 但是我就是覺得怪怪的
為什麼 我的 c 跟 ptrS 不能指向 0000 0010 這個位址較高(?)的 byte 呢?
為什麼是指向較低位元(0101 1000)的部分呢?
(其實我也不確定前八bits是高位元還是低位元 冏)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.196.10
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1493898924.A.884.html
→
05/04 19:59, , 1F
05/04 19:59, 1F
→
05/04 20:01, , 2F
05/04 20:01, 2F
推
05/04 20:07, , 3F
05/04 20:07, 3F
→
05/04 20:15, , 4F
05/04 20:15, 4F
推
05/04 20:25, , 5F
05/04 20:25, 5F
推
05/04 23:17, , 6F
05/04 23:17, 6F
→
05/04 23:17, , 7F
05/04 23:17, 7F
→
05/04 23:17, , 8F
05/04 23:17, 8F
→
05/04 23:17, , 9F
05/04 23:17, 9F
→
05/04 23:18, , 10F
05/04 23:18, 10F
推
05/05 08:23, , 11F
05/05 08:23, 11F
→
05/05 08:24, , 12F
05/05 08:24, 12F
推
05/05 21:37, , 13F
05/05 21:37, 13F
→
05/05 21:48, , 14F
05/05 21:48, 14F
→
05/05 21:49, , 15F
05/05 21:49, 15F
→
05/06 11:18, , 16F
05/06 11:18, 16F