c++ 学习之 数据类型的取值范围

前言

学习一门语言入门就是学习数据类型,我们来深入了解一下c++的数据类型的取值范围

正文

char

  • 通常情况下,如果 char 被定义为有符号类型,其取值范围通常是-128 到 127(或者在某些平台上是-127 到 127,取决于编译器)。这是因为 char 类型通常占用一个字节(8位),其中一位用于表示符号位。

  • 如果 char 被定义为无符号类型,其取值范围通常是 0 到 255,因为无符号 char 不包含负数。

short

  1. 带符号的 short (signed short):

通常占用 2 个字节(16 位)。

取值范围通常是从 -32768 到 32767。

其中一位用于表示符号位,所以它可以表示负数和非负数。

无符号的 short (unsigned short):

  1. 通常也占用 2 个字节(16 位)。
    取值范围通常是从 0 到 65535。
    无符号 short 只表示非负数。
    这两种类型的 short 在存储能力上是相同的,都占用 2 个字节,但由于符号性质不同,它们的取值范围也不同。

int

  • 带符号的 int (signed int):

通常占用 4 个字节(32 位)。

取值范围通常是从 -2147483648 到 2147483647。

其中一位用于表示符号位,所以它可以表示负数和非负数。

  • 无符号的 int (unsigned int):

通常占用 4 个字节(32 位)。

取值范围通常是从 0 到 4294967295。

无符号 int 只表示非负数。

这两种类型的 int 在存储能力上是相同的,都占用 4 个字节,但由于符号性质不同,它们的取值范围也不同。

long

  • 带符号的 long (signed long):

带符号的 long 类型的取值范围通常是依赖于编译器和平台的,但它通常至少与 int 类型一样大,通常是 4 个字节或 8 个字节。

取值范围通常是从 -9223372036854775808 到 9223372036854775807,如果是 8 字节大小。

  • 无符号的 long (unsigned long):

无符号的 long 类型的取值范围也依赖于编译器和平台,但它通常至少与 unsigned int 类型一样大,通常是 4 个字节或 8 个字节。

取值范围通常是从 0 到 18446744073709551615,如果是 8 字节大小。

float

在 C++ 中,float 类型的取值范围通常遵循 IEEE 754 浮点数标准,该标准定义了浮点数的表示和操作规则。float 类型通常占用 4 个字节(32 位),其取值范围如下:

最小正正规化数(最小的正非零数):约为 1.4013e-45

最大正规化数:约为 3.4028e+38

float 类型可以表示小数和整数值,但要注意它的精度有限,因为它只有 32 位,因此在表示非常大或非常小的数时,可能会丧失精度。浮点数也可能具有舍入误差,特别是在进行浮点数运算时。

double

在 C++ 中,double 类型的取值范围通常也遵循 IEEE 754 浮点数标准,该标准定义了浮点数的表示和操作规则。double 类型通常占用 8 个字节(64 位),其取值范围如下:

最小正正规化数(最小的正非零数):约为 4.9407e-324

最大正规化数:约为 1.7977e+308

与 float 不同,double 类型具有更高的精度,因此可以表示更大范围和更高精度的数值。这使得 double 类型在科学计算、工程和其他需要高精度数值的领域中广泛使用。

相关推荐
辞旧 lekkk8 小时前
【Qt】初识(上)
开发语言·数据库·qt·学习·萌新
Hhy_11078 小时前
【从零开始学习数据结构 ④】:栈 ——后进先出的艺术
c语言·数据结构·学习·visual studio
格林威8 小时前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机
Chasing Aurora8 小时前
python 安装依赖和导入模块 详解
开发语言·python·虚拟环境·import·pyenv·requirements
近津薪荼8 小时前
C++ vector容器底层深度剖析与模拟实现
开发语言·c++
木易 士心8 小时前
为什么 Promise 比 setTimeout 先执行?——JavaScript 事件循环与异步顺序完全指南
开发语言·javascript·ecmascript
念恒123068 小时前
Python(for循环)
python·学习
海清河晏1118 小时前
数据结构 | 链式队列
开发语言·数据结构·链表
广州山泉婚姻8 小时前
C++ STL Vector 入门与实战全攻略
c语言·c++
晔子yy8 小时前
[JAVA探索之路]带你从零开始实现线程池
java·开发语言