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 类型在科学计算、工程和其他需要高精度数值的领域中广泛使用。

相关推荐
Florence2313 小时前
GPU硬件架构和配置的理解
开发语言
青草地溪水旁13 小时前
设计模式(C++)详解—原型模式(2)
c++·设计模式·原型模式
青草地溪水旁13 小时前
设计模式(C++)详解—原型模式(3)
c++·设计模式·原型模式
C++_girl13 小时前
缓存未命中
c++·缓存
李游Leo13 小时前
JavaScript事件机制与性能优化:防抖 / 节流 / 事件委托 / Passive Event Listeners 全解析
开发语言·javascript·性能优化
bikong713 小时前
桥接模式,打造灵活可扩展的日志系统C++
c++·桥接模式
艾莉丝努力练剑13 小时前
【C++】类和对象(下):初始化列表、类型转换、Static、友元、内部类、匿名对象/有名对象、优化
linux·运维·c++·经验分享
疋瓞14 小时前
C++_STL和数据结构《1》_STL、STL_迭代器、c++中的模版、STL_vecto、列表初始化、三个算法、链表
数据结构·c++·算法
JJJJ_iii14 小时前
【左程云算法09】栈的入门题目-最小栈
java·开发语言·数据结构·算法·时间复杂度
枫叶丹414 小时前
【Qt开发】显示类控件(三)-> QProgressBar
开发语言·qt