作者leondemon (狗狗)
看板C_and_CPP
标题[问题] 变数类型所需要的记忆体空间.....
时间Thu Jun 4 18:07:21 2009
想请问一下一个比较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)
1F:推 zlw:听说C++跟C的规格文件里面有提,就是ISO出的那些,没仔细翻过 06/04 18:11
※ 编辑: leondemon 来自: 140.129.77.13 (06/04 18:13)
2F:→ zlw:记忆体位址在计组教科书有提到所谓的byte addressing,似乎就 06/04 18:13
3F:推 legnaleurc:#include <limits.h> 06/04 18:13
4F:→ zlw:是指一个记忆体位址对应一个byte。 06/04 18:13
6F:→ final01:你该修一下计组的 06/04 22:24
7F:→ leondemon:谢谢大家回应 但第一个问题和最後一个问题我还是不知道 06/04 23:20
8F:推 maxi326:没记错的话是compiler决定的,compiler depend on OS 06/04 23:27
9F:→ maxi326:所以你说是OS决定也不算有错 06/04 23:27
10F:→ maxi326:Boolean是一个class而不是primitive type吧 06/04 23:27
11F:→ maxi326:所以用sizeof(bool)看看,很少写C++,或许我是错的 06/04 23:28
12F:→ maxi326:而且没记错的话,sizeof回传的是number of bytes 06/04 23:30