首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

int等 类型 在 64bit 和 32 bit 机器下 位长的确定

2013-02-04 
int等 类型在 64bit 和 32 bit 机器上位长的确定一直听说过 int ,float等 基本数据类型所占的 字节数 与操

int等 类型 在 64bit 和 32 bit 机器上 位长的确定
一直听说过 int ,float  等 基本数据类型   所占的 字节数 与操作系统 的位数有关,想 问下,如何 查找和 确定 自己所用环境 的int float是 按32bit 还是 64bit 来配置的呢?

听说limit.h 中 能看出来。  我的操作系统是64bit的,是不是  可以自己选择   让 int 按 64bit 环境来配置 还是32bit 环境来配置啊?

另外 limit.h  中有这么一段 代码,如何看啊?  谢谢大家啊

#define _I8_MIN     (-127i8 - 1)    /* minimum signed 8 bit value */
#define _I8_MAX       127i8         /* maximum signed 8 bit value */
#define _UI8_MAX      0xffui8       /* maximum unsigned 8 bit value */

#define _I16_MIN    (-32767i16 - 1) /* minimum signed 16 bit value */
#define _I16_MAX      32767i16      /* maximum signed 16 bit value */
#define _UI16_MAX     0xffffui16    /* maximum unsigned 16 bit value */

#define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */
#define _I32_MAX      2147483647i32 /* maximum signed 32 bit value */
#define _UI32_MAX     0xffffffffui32 /* maximum unsigned 32 bit value */

/* minimum signed 64 bit value */
#define _I64_MIN    (-9223372036854775807i64 - 1)
/* maximum signed 64 bit value */
#define _I64_MAX      9223372036854775807i64
/* maximum unsigned 64 bit value */
#define _UI64_MAX     0xffffffffffffffffui64

#if     _INTEGRAL_MAX_BITS >= 128
/* minimum signed 128 bit value */
#define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1)
/* maximum signed 128 bit value */
#define _I128_MAX     170141183460469231731687303715884105727i128
/* maximum unsigned 128 bit value */
#define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128
#endif

#ifndef SIZE_MAX
#ifdef _WIN64 
#define SIZE_MAX _UI64_MAX
#else
#define SIZE_MAX UINT_MAX
#endif
#endi


另外 我用的是vs 字节长度与  编译器  有关吗?
[解决办法]
sizeof(int),sizeof(float)就可以了吧。
[解决办法]
limits.h+float.h
[解决办法]
这个是和编译器有关 
只是有时候 编译器的行为和操作系统有关
[解决办法]
自定义类型呗
如果需要固定长度的类型
[解决办法]
#ifdef _WIN64
所以有_WIN64这样的宏,就是64位的配置,否则32位的。
这个宏可以配置的

------解决方案--------------------


楼主只用导入stdint.h,使用定义好的固定长度整数,如int32_t,uint8_t,而不用管编译器是32位还是64位.
[解决办法]
sizeof(ptrdiff_t)如果等于4就是32位平台,8代表64位平台,这在GCC和vs上都是通用的.
[解决办法]

引用:
一直听说过 int ,float  等 基本数据类型   所占的 字节数 与操作系统 的位数有关,想 问下,如何 查找和 确定 自己所用环境 的int float是 按32bit 还是 64bit 来配置的呢?

听说limit.h 中 能看出来。  我的操作系统是64bit的,是不是  可以自己选择   让 int 按 64bit 环境来配置 还是32bit 环境来……

跟编译器有关,跟系统无关.

热点排行