標題: 簡單的代碼,求大神告知,謝謝你 [打印本頁]

作者: 永恒動力    時間: 2021-4-8 09:39
標題: 簡單的代碼,求大神告知,謝謝你


答案: 3  pg.state=3
  疑問: 結(jié)構(gòu)體的大小是所有成員的內(nèi)存之和,我覺得是sizeof(pg) 為7
            state 占用了3位,101,應(yīng)該為5  即pg.state=5
  求大神告知,謝謝你!

作者: 77599585    時間: 2021-4-8 12:57
冒號后面是占用幾位
同類型的short可以擠到一起  只要不超過sizeof(short)的位數(shù)  就算一個short  就是2;
char也可以擠到一起 一共8位正好是一個sizeof(char)  也算一個char  就是1;
一共就是3
作者: 77599585    時間: 2021-4-8 13:03
77599585 發(fā)表于 2021-4-8 12:57
冒號后面是占用幾位
同類型的short可以擠到一起  只要不超過sizeof(short)的位數(shù)  就算一個short  就是2;
...

后面的問題我也不懂 希望你弄明白之后回復(fù)我一下 互相學(xué)習(xí)哈
作者: 黃youhui    時間: 2021-4-8 13:48
77599585 發(fā)表于 2021-4-8 13:03
后面的問題我也不懂 希望你弄明白之后回復(fù)我一下 互相學(xué)習(xí)哈

不報錯嗎?沒有湊成3個F,少了一位。這種結(jié)構(gòu)體一般會強制配成8位  16位  32位的,隨便定義一位也要湊齊。
假設(shè)你不報錯,優(yōu)化自動給你添加了最后一位。

pg這個結(jié)構(gòu)體就是一個16位的類型(定義了15個,幫你補一個)
所以sizeof(pg)應(yīng)該等于4才對
pg.state=5



另外unsigned short mode:4  帶變得是mode只取unsigned short中的最低4位
作者: 黃youhui    時間: 2021-4-8 13:56
77599585 發(fā)表于 2021-4-8 13:03
后面的問題我也不懂 希望你弄明白之后回復(fù)我一下 互相學(xué)習(xí)哈

看錯了,重新看一下。兩個short合起來不超過8,占用1個字節(jié),剩下的三個合起來等于8,占用一個字節(jié)合起來就是3個字節(jié)。
作者: 永恒動力    時間: 2021-4-8 14:13
77599585 發(fā)表于 2021-4-8 13:03
后面的問題我也不懂 希望你弄明白之后回復(fù)我一下 互相學(xué)習(xí)哈

好的沒問題,謝謝你!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1