[問題] 自訂資料型別的size

看板C_and_CPP作者 (海費爾)時間14年前 (2010/12/23 16:40), 編輯推噓7(7036)
留言43則, 11人參與, 最新討論串1/1
我們都知道在一般情況下 char型別的size為1Byte int型別的size為2Byte long型別的size為4Byte 現在我想把型別的size定義成16Byte以上 請問這有可能做到嗎? 是否能自行定義一個資料型別,使這個型別的size為16Byte以上? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.45.106

12/24 00:50, , 1F
struct XXX { char value[16]; }; right ?
12/24 00:50, 1F

12/24 00:52, , 2F
這樣value[0]的size是16Byte?
12/24 00:52, 2F

12/24 00:53, , 3F
你看得那本書可以扔了...
12/24 00:53, 3F

12/24 00:53, , 4F
sizeof XXX是16B
12/24 00:53, 4F

12/24 00:54, , 5F
value[0] 是幾個 char?
12/24 00:54, 5F

12/24 00:56, , 6F
1個char
12/24 00:56, 6F

12/24 00:57, , 7F
我想要的是把value[0]改成16Byte,這有可能嗎?
12/24 00:57, 7F

12/24 01:02, , 8F
很底很底層的東西都要改掉吧,但沒必要花麼大的功夫.
12/24 01:02, 8F

12/24 01:05, , 9F
要自定一個型態16byte不是問題, 問題是你要拿來怎麼用??
12/24 01:05, 9F

12/24 01:06, , 10F
當字串??當整數??當浮點數?? size不是問題, 最重要的問
12/24 01:06, 10F

12/24 01:07, , 11F
題是CPU如果沒辦法直接原生支援16Byte的運算, 你就得自
12/24 01:07, 11F

12/24 01:08, , 12F
己實作原本+-*/甚至bit op等運算子, 也包含比較邏輯與
12/24 01:08, 12F

12/24 01:08, , 13F
assign等運算子的method; 如果你想存浮點數, 還得看看現
12/24 01:08, 13F

12/24 01:09, , 14F
在有沒有16Byte的浮點數spec, 而且八成你得自己實作FPU.
12/24 01:09, 14F

12/24 01:10, , 15F
而且有必要的話可能還要考慮和原生或其他type互轉問題.
12/24 01:10, 15F

12/24 01:12, , 16F
所以最終要回歸你想怎麼用這個16byte的型態....@_@"
12/24 01:12, 16F

12/24 01:14, , 17F
不要把錯都推給書......
12/24 01:14, 17F

12/24 01:17, , 18F
謝謝V大回覆那麼多,多謝指教,看起來還蠻麻煩的
12/24 01:17, 18F

12/24 01:19, , 19F
主要是想用來做存取的動作而已
12/24 01:19, 19F

12/24 02:42, , 20F
大數演算法?
12/24 02:42, 20F

12/24 02:49, , 21F
變數不就是拿來存或取的Orz 問題在於你要視為怎樣的資料
12/24 02:49, 21F

12/24 02:50, , 22F
來存取, 整數?? 那需要什麼運算??賦值??加減法??比較??
12/24 02:50, 22F

12/24 02:52, , 23F
看起來確實要大數或部份大數的實作. 如果只是儲存與顯示
12/24 02:52, 23F

12/24 02:54, , 24F
那也需要考慮你要怎麼把資料以原生型態放進去, 大概可以
12/24 02:54, 24F

12/24 02:56, , 25F
免不了基本的大數處理. 能
12/24 02:56, 25F

12/24 03:53, , 26F
是整數,只需 value[0] = value[1]; 這個operation而
12/24 03:53, 26F

12/24 03:54, , 27F
已,但value[0]和value[1]的size需要是16Byte以上
12/24 03:54, 27F

12/24 04:07, , 28F
memcpy 吧 這種事偷懶不來的
12/24 04:07, 28F

12/24 19:25, , 29F
operator overloading 一下就好了咩
12/24 19:25, 29F

12/24 19:30, , 30F
用到 operator overloading 的話,實際也是處理大數吧?
12/24 19:30, 30F

12/24 21:38, , 31F
滿恐怖的 你看哪本書? 可以po出來讓大家有個警覺嗎?
12/24 21:38, 31F

12/24 21:38, , 32F
在丟掉這本書之前麻煩po出來一下XDD
12/24 21:38, 32F

12/24 21:57, , 33F
樓上沒說我竟沒警覺!!那本書的int只有2Bytes !!
12/24 21:57, 33F

12/24 22:36, , 34F
我看的書是大家推荐的C++ PRIMER 侯捷譯,在36頁的那
12/24 22:36, 34F

12/24 22:38, , 35F
個表,他寫int 整數 16bit,16bit不是2byte嗎?
12/24 22:38, 35F

12/24 23:31, , 36F
很奇怪嗎? 在過去是這樣沒錯阿 因為機器的進化 int 的大小
12/24 23:31, 36F

12/24 23:31, , 37F
動而已 標準只有規定相對大小跟最少要多少而已
12/24 23:31, 37F

12/24 23:33, , 38F
我手上的36頁 沒有這個東西啊 我是第三版的
12/24 23:33, 38F

12/24 23:33, , 39F
抱歉,我沒注意到是Min.Size,讓大家誤解了
12/24 23:33, 39F

12/24 23:34, , 40F
其實第三版也快10年了......
12/24 23:34, 40F

12/24 23:37, , 41F
現在x86幾乎都是4bytes int了 或是你可以sizeof()看看
12/24 23:37, 41F

12/24 23:44, , 42F
補一下,第四版也是寫 16 bits XD
12/24 23:44, 42F

12/25 01:40, , 43F
看來第三版太舊了...XD
12/25 01:40, 43F
文章代碼(AID): #1D4tjxyo (C_and_CPP)