A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Charay 中级黑马   /  2014-12-23 22:40  /  4009 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个int占多少个字节?
这个问题我们往往得到的答案是4.
可是int究竟占多少个字节,却跟你的机器环境有关.

As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that generate code for 64-bit platforms.
近期在一本有关代码审计的书上看到如上解释.这里非常好的解释了int究竟应该占多少个字节.
并且从他的角度来看是编译器去适应平台.所以真正决定int占多少字节取决于你的device platforms.
事实上不管哪种模型short和char不管哪种model下都保持一致.
我们见得最多的就是ILP32LL模型.这样的模型下int和long已经pointer占4个字节 long long占8个字节.

PS:这个表非常easy记,中间的数字表明你是64bit还是32bit的机器.前面的I表示int,L表示long,LL表示long long,P就表示pointer.
位于数字前面的类型表示跟中间的bit数保持一致.举个样例:ILP32LL 就是ILP是32位,LL是64位


22 个回复

倒序浏览
看起来有点高大上的feel
回复 使用道具 举报
对啊,学习了! 跟计算机的环境相关,不一定都是4个字节
回复 使用道具 举报
在C,C++中与机器有关,但java中都是统一4个字节的吧
回复 使用道具 举报
Java里的pointer是什么东东啊,你确认这是在说JAVA?
回复 使用道具 举报
一直都认为在java中int占4个字节啊,这跟机器环境有什么内在联系吗?
回复 使用道具 举报
kerner 中级黑马 2014-12-24 00:19:20
7#
你这是从哪里搞来的啊,还有long long pointer......这是C语言的啊。。
JAVA中规定死了byte short char int long float double几种基本类型的大小,但是在C/C++中是没有明确规定大小,具体有编译器和操作系统决定。
不要随便COPY一些东西误人子弟。
回复 使用道具 举报 1 0
一般不是4个字节码,其它语言好像会不同。
回复 使用道具 举报
呢? 中级黑马 2014-12-24 00:26:22
9#
原来如此啊
回复 使用道具 举报
黑马-李权88 来自手机 中级黑马 2014-12-24 00:28:40
10#
有点好深吧,这些原理不需要了解吧?
回复 使用道具 举报
楼主钻研的好细致啊,向楼主学习。。。。
回复 使用道具 举报
学习了,赞
回复 使用道具 举报
我一般理解的都是4个字节
回复 使用道具 举报
huoxy 中级黑马 2014-12-24 10:42:54
14#
Java为了实现跨平台性已经将基本数据类型的长度统一了,所有系统的int都是4字节。
回复 使用道具 举报
Piaoyu 中级黑马 2014-12-24 11:03:58
15#
学习,学习,原来int也这么多东西啊!!
回复 使用道具 举报
求大神科普,JAVA中的数据类型到底和系统有没有关系?看到楼主的神论,顿时觉得自己跟文盲一样。
回复 使用道具 举报
看不懂,.好深奥
回复 使用道具 举报
在C,C++中与机器有关,但java中就是4个吧
回复 使用道具 举报
还有long long,学习了!!!!
回复 使用道具 举报
我想说,学习了。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马