看板 C_and_CPP 關於我們 聯絡資訊
想請問一下一個比較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)
zlw:聽說C++跟C的規格文件裡面有提,就是ISO出的那些,沒仔細翻過 06/04 18:11
※ 編輯: leondemon 來自: 140.129.77.13 (06/04 18:13)
zlw:記憶體位址在計組教科書有提到所謂的byte addressing,似乎就 06/04 18:13
legnaleurc:#include <limits.h> 06/04 18:13
zlw:是指一個記憶體位址對應一個byte。 06/04 18:13
final01:你該修一下計組的 06/04 22:24
leondemon:謝謝大家回應 但第一個問題和最後一個問題我還是不知道 06/04 23:20
maxi326:沒記錯的話是compiler決定的,compiler depend on OS 06/04 23:27
maxi326:所以你說是OS決定也不算有錯 06/04 23:27
maxi326:Boolean是一個class而不是primitive type吧 06/04 23:27
maxi326:所以用sizeof(bool)看看,很少寫C++,或許我是錯的 06/04 23:28
maxi326:而且沒記錯的話,sizeof回傳的是number of bytes 06/04 23:30