| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4486 人关注过本帖
标题:数据类型占据的空间大小
只看楼主 加入收藏
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
数据类型占据的空间大小
在《C Primer Plus(第五版)》(中文版)第35页上提到,字(word)在早期的8位apple机器上占据8位空间,在16位80286机器上占据16位,在32位PC机器上占据32位空间。更强的计算机甚至会出现64位的字。
在40页上提到,一般情况是long long类型为64位,long类型为32位,short类型为16位,int类型依照机器的自然字为16位或32位。

是不是可以这样理解,在32位系统上int类型一般为32位?
如果上述看法成立的话,那么在64位的系统上int的类型就应该为64位?毕竟CPU很早就进入64位时代了,而64位系统也已经很常见了。这样,long类型数据空间就必须随之增加到64位,long long类型也必须改变为128位?就是说专门为64位编写的程序就必须考虑到这个问题?还是说专为64位编写的程序也同样使用与32位程序同样大小的数据空间?

谢谢。
搜索更多相关主题的帖子: 空间 计算机 apple 中文版 
2011-12-03 19:03
林梦
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2011-6-10
收藏
得分:5 
个人理解:
    我现在遇到的笔试题,都是问,在32位极上,各种类型的数据所占的空间大小。
    楼主最后一段所说的,在64位机上,int所占大小是否也应该是64位。这个问题,我的理解是,在64位机上,int应该还是32位,而此时long为64位,或者,int和long都是64位。因为在我所看的c的资料中,32位机中,最多的情况,是int和long都占32位。
    个人理解,期待斧正。谢谢。
2011-12-03 19:25
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:15 
不同的数据类型占多少内存,是编译器说了算.不是机器说了算的.ok? 就拿32位机来说,他可以讲int为2字节,也能为4字节,还能为8字节.
这主要是编译时,看编译器的设置了.常用的如下:

32位编译器:

       char :1个字节
       char*(即指针变量): 4个字节
       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个字节

能力 技巧
2011-12-03 20:57
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 3楼 非死亡!
由于现在的CPU并不是纯粹的64位,它同时也向下兼容32位操作系统的,所以我在原文中并没有说机器的硬件决定数据空间的大小,我说的是系统是64位还是32位。
64位硬件上安装32位系统,编译器当然是32位的了;安装64位系统(如果不考虑额外的32位支持的话),原则上软件也都是64位的,此时编译器当然默认为指64位的编译器。

按照你的说法,32位编程和64位编程,在数据空间上分别并不显著,只有long类型和unsigned类型的数据空间不一样。对吧?


[ 本帖最后由 gleerat 于 2011-12-4 11:47 编辑 ]

明察、慎思、笃行
2011-12-04 11:35
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 2楼 林梦
早期的16位机器的系统上和现在64位机器的32/64位系统上,自然字word占据空间不一样,而且一般自然字word的数据空间是跟随机器/操作系统而变的;而int类型是16位还是32位是取决于机器(操作系统)的自然字word而定的。
所以才有这样一个想法的。

明察、慎思、笃行
2011-12-04 11:43
快速回复:数据类型占据的空间大小
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024522 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved