在c语言中,int,char,short三种类型数据在内存中所占的字节数由什么决定

 我来答
xoaxa
推荐于2017-09-24 · TA获得超过8608个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3423万
展开全部
通常char占1个字节,short占2个字节。原因是,1个字节可以表示一个ASCII码,为了提高计算机的数据处理能力,short用一个字节远远不足,但限于早年的存储器体积和价格,用2个字节也是不得以的事情。现在,存储器的体积不再是考虑的因素,价格也不是“事”,CPU的数据寄存器已经是64位(8个字节),32位的CPU已近末日黄昏,所以short用8个字节表示不再是梦。所谓64位的CPU,指的就是其数据寄存器(包括指令寄存器)的宽度是64bits,一次读取、存储64bits最为快捷,这就是int类型数据的标准宽度。
蒋金多多
2018-01-18 · TA获得超过206个赞
知道答主
回答量:62
采纳率:0%
帮助的人:52.7万
展开全部
总结一下哈:针对大部分32位机器来说所占内存是: char 字符型 1个;int整型2 个;short 2 个;但是,不同的机器,和不同的编译软件下,都会不同。所以你可以用sizeof()函数测试一下。例sizeof(char);
这里补充下我的答案,之前回答这个问题时候,自己还是一名单片机开发爱好者,C51单片机中的int确实是16位,两个字节。

而现在的我从事应用软件开发,在这些编译器中(比如vs、gcc),int一般都是4位的(无论32位还是64位)。事实上,一个比较官方的解释是:编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
六闲村
2013-01-12 · TA获得超过158个赞
知道答主
回答量:51
采纳率:0%
帮助的人:40.9万
展开全部
字符型 char 1 字节
整型 int 2 字节
short 2 字节
长整型 long 4 字节
单精度 float 4 字节
双精度 double 8 字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuzhixi4935
2015-03-27 · TA获得超过302个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:131万
展开全部
一般来说
int 4字节
char 1字节
short 2字节
由编译器决定的,编译器会根据系统平台自己改变数据类型的取值范围。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
______orz____
2017-12-17 · 超过33用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:42.8万
展开全部
16位编译器
char :1个字节
char*(即指针变量): 2个字节
short int : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

32位编译器
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

64位编译器
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式