小细节:关于C++各种变量的size问题。

C++中整形数据类型的范围都定义在了limits.h中,具体场景中可以从这个文件获取编译器具体实现方式。


ISO并没有规定大部分数据类型的长度,仅仅规定了sizeof(char)=1,但位长却是CHAR_BIT定义的


32位机器中,int,long,指针都是32-bit。

在Unix 64位机器中,int是32位,但long和指针是64位。 

在Windows 64位机器中,long long和指针是64位,但long和int是32位。


另外,int也不一定偏是4个字节的,在SPARC64中,int是8个字节。


再说double和float,虽然ISO文档里没规定,但是又另外一个IEEE754文档做了规定,规定float是32位而double是64位,当然,你可以不遵循这个文档,但实际应用中,还没有操作系统架构不遵循这个文档。所以,你可以把float和double的长度看成是和平台无关的。


所以,以后也注意点,别一提到long就马上觉得是32位的,这要视平台而定,ISO文档里没有规定。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值