C++中int、long和double的取值范围和最大值,以及32位和64位的差异解读

前言

一般对于C/C++下int等基本数字类型,主要关注三个维度,长度、取值范围和最大值的宏定义。下面分三个维度说明下。

有三个影响因素:

  • 语言规则限制:比如int是变长,long是定长,double还有精度问题等等;
  • 操作系统:某几个类型,Windows和Linux在32位和64位操作系统上的取值是不一致;
  • 编译器:编译器才是区分32位和64位的关键因素,因为64位操作系统也可以运行32位程序;但64位程序只能在64位操作系统上运行。

目录

1.长度

2.取值范围

3.最大值的宏定义

4.参考文档:


1.长度

图表:C/C++基础数字类型的取值范围
类型取值范围位数
unsigned   int0~429496729510位
int2147483648~214748364710位
unsigned long0~429496729510位
long2147483648~214748364710位
long long-9223372036854775808~922337203685477580719位
unsigned long long0~184467440737095516119位
__int64-9223372036854775808~922337203685477580719位
unsigned __int640~1844674407370955161520位

关于占用字节数,详情在这里:32位与64位下各类型长度对比,已讲的很好,我不再赘述。

  

注:I表示int类型,L表示long类型,P表示pointer指针类型,32表示32位系统/编译器,64表示64位系统/编译器。

2.取值范围

首选,说一下C/C++下int等基本数字类型的长度和取值范围。

 

3.最大值的宏定义

 

C++中, 经常会使用, 某些类型的最大值, 如int的最大整数(INT_MAX), C的函数中, 包含了这些宏定义.

头文件: #include <climits>


维基百科上的相关说明:


4.参考文档:

32位与64位下各类型长度对比

C++ - 内置类型的最大值宏定义

https://www.runoob.com/cprogramming/c-standard-library-limits-h.html

https://zh.wikipedia.org/wiki/Limits.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值