• 5080阅读
  • 1回复

64位系统数据类型问题,请问怎么解决? [复制链接]

上一主题 下一主题
离线jully
 
只看楼主 倒序阅读 楼主  发表于: 2012-09-27
关键词: C++出错
把程序从32位上迁移到64位系统出现下面警告很多,请问怎么处理好?谢谢!
warning C4267: 'initionaling': conversion from 'size_t' to 'int', possible loss of data。
离线ppdayz

只看该作者 1楼 发表于: 2012-09-29
回 楼主(jully) 的帖子
代码写的不够严谨
size_t是一些C/C++标准在stddef.h中定义的。
这个类型足以用来表示对象的大小。
size_t的真实类型与操作系统有关

在32位架构中被普遍定义为:
typedef unsigned int size_t;
而在64位架构中被定义为:
typedef unsigned long size_t;

size_t在32位架构上是4字节,在64位架构上是8字节,在不同架构上进行编译时需要注意这个问题。

而int在不同架构下都是4字节,与size_t不同;且int为带符号数,size_t为无符号数。

所以说,改代码,或者强转
快速回复
限100 字节
 
上一个 下一个