免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 26909 | 回复: 6
打印 上一主题 下一主题

在不同位数的机器上,int长度不变,long长度变化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-15 09:28 |只看该作者 |倒序浏览
这两台机器,前者32位,后者64位,测试了以下数据类型的长度:

前者:
int:4,long:4,long long:8
后者:
int:4,long:8,long long:8

不是说int会变吗,为何变得是long?
还有如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不需要重新编码编译的前提下,该如何处理这种变化?
谢谢指教。。

论坛徽章:
0
2 [报告]
发表于 2008-04-15 09:35 |只看该作者
原帖由 maxxfire 于 2008-4-15 09:28 发表
这两台机器,前者32位,后者64位,测试了以下数据类型的长度:

前者:
int:4,long:4,long long:8
后者:
int:4,long:8,long long:8

不是说int会变吗,为何变得是long?
还有如果要写个通用的程序,订 ...

在16bit系统中sizeof(int)=2;
在有的64bit系统中的确有sizeof(int)=8的情况,跟机器字长和编译器都有关.

论坛徽章:
0
3 [报告]
发表于 2008-04-15 09:40 |只看该作者
"如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不需要重新编码编译的前提下,该如何处理这种变化?"

用long long 吧,相对好一些,但其它代码不需要重新编译是比较困难的!

论坛徽章:
0
4 [报告]
发表于 2008-04-15 09:50 |只看该作者
原帖由 system888net 于 2008-4-15 09:35 发表

在16bit系统中sizeof(int)=2;
在有的64bit系统中的确有sizeof(int)=8的情况,跟机器字长和编译器都有关.



哦,学习了。。

论坛徽章:
0
5 [报告]
发表于 2008-04-15 09:54 |只看该作者
原帖由 maxxfire 于 2008-4-15 09:28 发表
这两台机器,前者32位,后者64位,测试了以下数据类型的长度:

前者:
int:4,long:4,long long:8
后者:
int:4,long:8,long long:8

不是说int会变吗,为何变得是long?
还有如果要写个通用的程序,订 ...

使用int32_t,int64_t,int16_t等类型,在头文件<stdint.h>中定义的。

论坛徽章:
0
6 [报告]
发表于 2008-04-15 10:12 |只看该作者
两台机器,前者32位,后者64位,测试了以下数据类型的长度:

前者:
int:4,long:4,long long:8
后者:
int:4,long:8,long long:8
不是说int会变吗,为何变得是long?


The common programming model for existing 32-bit Unix stystems is caled the ILP32 model,denoting that integers, long integers and pointers occupy 32 bits. The model that is becoming most prevalent for 64-bit Unix systems is called LP64 model, meaming only long integers and pointers require 64 bits.


至于还有如果要写个通用的程序,订死必须用4个或8个字节的数据类型,在不需要重新编码编译的前提下,该如何处理这种变化?
赞同楼上的观点
不过楼主要求不重新编译是不行的吧

[ 本帖最后由 zhuhefang2006 于 2008-4-15 10:15 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-04-15 14:37 |只看该作者
使用#include <stdint.h>
8位:int8_t, uint8_t
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP