全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:875
推到 Plurk!
推到 Facebook!

天阿sizeof( )的大問題 for BCB5~難道我錯了嗎??

答題得分者是:brook
dotdot
版主


發表:29
回覆:142
積分:64
註冊:2002-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-07 21:19:48 IP:211.22.xxx.xxx 未訂閱
struct ccc{ int x; char a[6]; };    int x=sizeof(ccc);    x的值居然等於12 理論上應該10阿< >< > 天阿我定結構後突然發現這問題 難道我的方式不合法嗎 可是我把結構內分開帶進去都正確阿???BUG???
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-07 21:36:14 IP:218.160.xxx.xxx 未訂閱
project->options->advanced compiler->data alignment->選byte即可.
dotdot
版主


發表:29
回覆:142
積分:64
註冊:2002-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-07 21:53:30 IP:211.22.xxx.xxx 未訂閱
真的耶 真是慚愧  雖然解決了但我只知其然不知所以然~ 如果方便可以解說一下嗎? 那設成
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-08 11:03:37 IP:211.23.xxx.xxx 未訂閱
soga~    以前都沒去注意, 還好有人提出來, 現在了解了, 說明一下 那一個data alignment的意思 就是會依照你所選的data大小作"多不退少補"的動作 有四個選項: 1. Byte-> 1 byte 2. Word-> 2 bytes 3. Double word-> 4 bytes 4. Quad word -> 8 bytes (Default setting)    因為你的char a[6]定義了6個byte, 所以不足8個byte就補成8個byte 所以實際上BCB幫你作了char a[8]的動作, 只是你在寫code時, 使用char[6], char[7]時, 會出現complier warning. int x-->4 bytes+char a[8]-->8 bytes 共12 bytes.    為什麼BCB沒事會作一個data alignment? 這只是為了一些有data要排列整齊的使用, 會用到的人自然會想到, 不會用到的人還是不會用到 以此例, 你把
系統時間:2024-05-07 18:28:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!