[問題] 變數類型所需要的記憶體空間.....

看板C_and_CPP作者 (狗狗)時間15年前 (2009/06/04 18:07), 編輯推噓4(408)
留言12則, 6人參與, 最新討論串1/1
想請問一下一個比較general的問題 在宣告變數時 一種變數型態(如int)會配置一個固定大小的空間給它 在看許多語言介紹書說 說這些空間的配置 會根據不同電腦而有不同的狀況 雖然我可以用printf("%d", sizeof(x)); 來得知x變數所佔的byte的大小 但是如果要將程式給其他電腦跑 我就不知道我原本的程式到別人的電腦能否執行 若是換一個電腦那還好 但如果是要開發給成千上萬客戶使用的軟體 那就必須嚴謹點 畢竟這個公司的形象 產品的形象有關... 因此想要問決定一個變數型態所佔記憶體空間大小的因素是什麼? 硬體(CPU? RAM?)還是軟體(OS? programming language?) 有辦法查詢嗎? 謝謝 :) 另外一問:Boolean值我用sizeof()去查 結果顯示佔1 byte Boolean是真的佔「1 byte」 還是原本只佔「1 bit」但sizeof會視為1 byte? 記憶體位址都是用byte為單位嗎?所以記憶體最小使用單位為byte還是為bit? 又一問:電腦CPU說支援多少位元 或作業系統是幾位元的 會影響變數型態所佔記憶體大小嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.77.13 ※ 編輯: leondemon 來自: 140.129.77.13 (06/04 18:11)

06/04 18:11, , 1F
聽說C++跟C的規格文件裡面有提,就是ISO出的那些,沒仔細翻過
06/04 18:11, 1F
※ 編輯: leondemon 來自: 140.129.77.13 (06/04 18:13)

06/04 18:13, , 2F
記憶體位址在計組教科書有提到所謂的byte addressing,似乎就
06/04 18:13, 2F

06/04 18:13, , 3F
#include <limits.h>
06/04 18:13, 3F

06/04 18:13, , 4F
是指一個記憶體位址對應一個byte。
06/04 18:13, 4F


06/04 22:24, , 6F
你該修一下計組的
06/04 22:24, 6F

06/04 23:20, , 7F
謝謝大家回應 但第一個問題和最後一個問題我還是不知道
06/04 23:20, 7F

06/04 23:27, , 8F
沒記錯的話是compiler決定的,compiler depend on OS
06/04 23:27, 8F

06/04 23:27, , 9F
所以你說是OS決定也不算有錯
06/04 23:27, 9F

06/04 23:27, , 10F
Boolean是一個class而不是primitive type吧
06/04 23:27, 10F

06/04 23:28, , 11F
所以用sizeof(bool)看看,很少寫C++,或許我是錯的
06/04 23:28, 11F

06/04 23:30, , 12F
而且沒記錯的話,sizeof回傳的是number of bytes
06/04 23:30, 12F
文章代碼(AID): #1A9vpRgj (C_and_CPP)