关于long和int
我认为:
int数据类型是平台相关的,针对32 bit CPU平台的Compiler会分配32 bit存储空间,针对64 bit CPU平台的Compiler会分配64 bit存储空间。
long类型是平台无关的,无符号的,固定分配4字节,32 bit。
long long类型则是long的2倍,也是无符号的,64 bit,8字节。
不知道理解对不对。
另外,我不清楚long int与long和int是什么关系,请知道的指教,谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我在x86_64上测试出来和你说的刚好相反,int是32bit,而long是64bit。
同意
long就是long int.
sizeof print 就知道了,再知道?google 那几个标准去吧。
C标准只规定sizeof(int)≯sizeof(long)
以前的时候,int一直是机器字长,但自从64位出来之后,惯例就不再是惯例了
即使是以前,int也不一定是CPU字长。譬如在8位机时代,int一般是16位,因为8位太不实用。后来还出现过专用于开关式控制的一位CPU,它的int一般是8位。16位CPU,int也不一定是16位,有的早期单片机C编译器int是8位,因为那时的外围芯片多数是8位。
因此,归纳起来:
1)C标准没有规定int的长度,只是规定它不得长于long。
2)首先取决于CPU字长。
3)其次取决于开发方向。
其实这个该死的东西叫 ABI