作者BOSSHAHA ()
看板Grad-ProbAsk
標題[理工] 資結 int char 轉換
時間Sat Nov 9 23:44:02 2019
https://imgur.com/1ugqDhg
求解 解題思路過程
u.m 最後會輸出什麼?
題目解答為-69
解答不一定對?!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.51.201 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1573314244.A.272.html
1F:推 mi981027: 剛才跑了一下 答案應該會跟你的電腦是big endian還是lit 11/10 00:58
2F:→ mi981027: tle endian有關? 11/10 00:58
3F:→ mi981027: 先講union union裡宣告的變數記憶體是共享的 (可以去pri 11/10 00:58
4F:→ mi981027: nt兩個人的位址,會是一樣的 ) 而大小由最大的那個人決 11/10 00:58
5F:→ mi981027: 定 11/10 00:58
6F:→ mi981027: int有4個bytes, char只有1個,所以就分配4 bytes給u 11/10 00:58
7F:→ mi981027: 今天覆值187給u.n 二進位是0...010111011(共32 bit) 11/10 00:58
8F:→ mi981027: 如果是一般intel電腦,是little endian的 就會分成4段 11/10 00:58
9F:→ mi981027: 10111011, 00000000, 00000000, 00000000 11/10 00:58
10F:→ mi981027: 由低位開始擺,而u.m因為跟u.n共享同一個位址,但又是ch 11/10 00:58
11F:→ mi981027: ar,只有一個byte 11/10 00:58
12F:→ mi981027: 所以印出來的時候就會印出 10111011 11/10 00:58
13F:→ mi981027: 轉成10進位就是-69 11/10 00:58
14F:→ mi981027: 但如果今天是big endian, 就會反過來擺 那答案就是0 11/10 00:58
15F:推 DLHZ: 長知識 11/10 01:00
16F:推 mistel: 有點不太懂 是指m,n兩個變數用同一個記憶體空間 的意思嗎 11/10 08:11
17F:→ mistel: ? 11/10 08:11
18F:推 Handsomeshen: 長知識 11/10 11:09
19F:→ DLHZ: 是 11/10 11:49
20F:推 mistel: 原來如此,原來還有union這種結構變數,懂了! 11/10 12:29
21F:推 plsmaop: union,compiler 常用 11/10 12:52
22F:→ realmanKG: 推,長知識 11/10 14:46
23F:推 zuchang: 長知識推 話說 這哪裡的題目啊 11/10 14:50
24F:→ BOSSHAHA: 感謝m大解惑!! 11/10 17:10
25F:→ BOSSHAHA: Z大 117期中考古 11/10 17:12
26F:推 gash55025502: XD難怪很像彪哥題目 11/10 18:29
27F:推 achicn3: 一看就知是彪哥的題目 11/11 12:17
28F:推 joey11121: 推長知識 11/12 09:53