C语言中各种整型变量在不同字长机器上的字节数详细探讨
来源:互联网 发布:360度全景制作软件 编辑:程序博客网 时间:2024/04/27 21:04
今天,看到一个特别基础的问题探讨,但是认识比较深入,感觉文章比较好,转载至此 文末附上原文链接
突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度、google各种查找,各种书籍:《C++ Primer》、《C程序设计语言》查看,终于明白了一些。下面的话选自《C程序设计语言》:
short与long两个限定符的引入可以为我们提供满足实际需要的不同长度的整形数。int通常代表特定机器中证书的自然长度。short类型通常为16位,long类型通常为32位,int类型可以为16位或32位。各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。
下面一段话选自《C++ Primer》:
short、int和long类型都表示整型值,存储空间的大小不同。一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的)。
这时候我又想到了,不同的机器位下,这三个类型到底有什么区别,short就不说了,从上面两段介绍来说,short应该都是16位了,那么int和long呢?百度一下(我不喜欢百度,但是google不稳定,只能百度了)。先看列表:
类型
16位系统/字节
32位系统/字节
64位系统/字节
char
1
1
1
char*
2
4
8
short
2
2
2
int
2
4
4
long
4
4
8
long long
8
8
8
从表中可以看出这么几个问题,int类型在64位系统下竟然是4个字节32位的。还有,这些玩意儿到底跟什么有关系?是谁在控制着?从网上扒了各种解释,大概有这么两点:
1、64位系统下,编译器为了向前兼容,将int类型自动编译为4个字节的了;
2、这些个玩意儿就是编译器来控制的,不同的编译器将int类型编译成不同长度的,所以,使用什么编译器才是重要的,比如:32位系统,tc下的int就是16位长度的,VC就是32位长度的。
3、long
通过上面的介绍,应该大致明白整型的定义了吧,所以我们在使用整型变量的时候还是得小心的,尤其需要其所占空间长度的时候,千万不要想当然的认为int在32位系统下就是4个字节。尽量使用sizeof取值
原文链接 http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html
- C语言中各种整型变量在不同字长机器上的字节数详细探讨
- C语言中各种整型变量在不同字长机器上的字节数详细探讨
- C语言中各种整型类型所占字节数
- C语言的整型和长整型的字节长
- C语言的整型和长整型的字节长
- C语言的整型和长整型的字节长
- C语言中显示变量所占字节数;字节、字、字长;原码、反码、补码
- C语言整型变量所占内存字节数
- C语言中各种类型占的字节数
- 各种数据类型在不同机器上的所占字节问题
- C语言中,整形、浮点型、字符型数据在不同编译器中所占据的字节数
- 在C语言中各种类型数据所占字节数
- 谈谈在java中各种类型变量所占的字节数(一)
- 各种数据类型在Win32和Win64系统下所占用的字节数(C语言)
- 不同语言的变量类型及字节长度 (C & Java)
- 基本数据类型在不同字长机器上所占的位数
- C语言的各种数据结构所占的字节数
- C语言中整型变量的互换方法总结
- S获取节点的兄弟,父级,子级元素的方法
- 实现邮箱验证用户注册
- NFC低概率读不到标签
- vim编辑器美化
- gradle 文件读取签名 信息 多渠道打包
- C语言中各种整型变量在不同字长机器上的字节数详细探讨
- python '/'与'//'学习
- 分针网—每日分享:H5动效的常见制作手法
- 实现div可拖放
- vim和Linux命令行常用快捷键
- $cordovaCamera.getPicture与navigator.camera.getPicture
- 通过fluentd收集docker日志
- FineUI秘密花园(六) — 表单控件
- Educational Codeforces Round 21 D. Array Division(前缀和,二分)