C++数据类型之实型、有符号数以及无符号数
- 引言
- 一、实型(浮点数)
- 1.1、实型常量
- 1.2、实型变量
- 二、有符号数
- 三、无符号数
- 总结
引言
💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu
🔔 上一篇:【004】C++数据类型之字符类型(char)详解
一、实型(浮点数)
浮点数能够表示小数部分的数值,如 3.1415、10238.234。
计算机将这样的值分为两部分存储,一部分表示值,另一部分用于对值进行放大或缩小。如数值3.1415可以看成0.31415(基准值)和100(缩放因子)。缩放因子的作用是移动小数点的位置,术语浮点因此而得名。
C++内部表示浮点的方法与上述相同,只不过它是基于二进制数,缩放因子是2的幂而不是10的幂。浮点数能够表示小数值、非常大的值和非常小的值,它们的内部表示方法与整型有很大区别。
实型分为:单精度浮点数(float,占4字节)和双精度浮点数(double,占8字节)。
1.1、实型常量
- 不以f结尾的实型常量是double类型,如3.1415。
- 以f结尾的实型常量是float类型,如3.1415f。
- 指数形式:123e3表示 123 ∗ 1 0 3 123*10^3 123∗103。
1.2、实型变量
C++实型变量是指具有小数点的数值类型,包括单精度浮点数(float)、双精度浮点数(double)和长双精度浮点数(long double)三种。这些变量可以存储任意大小的实数,但由于计算机内部表示的限制,其精度和范围是有限的。在C++中,实型变量使用浮点数表示法来存储,即采用科学计数法的形式表示。例如,3.14可以表示为3.14e0或者314e-2。在定义实型变量时,需要指定变量类型,并且可以给变量赋初值。例如:
float f = 3.14f;
double d = 1.23456789123456789;
long double ld = 1.23456789123456789123456789L;
其中,f是单精度浮点数,d是双精度浮点数,ld是长双精度浮点数。注意,在给长双精度浮点数赋值时要加上后缀L,以区分其他两种浮点数。
二、有符号数
C++中,有符号整数类型表示可以表示正数、负数和零的整数,而无符号整数类型则仅表示非负整数(即0和正整数)。
数据二进制的最高位为符号位,其他位为数据位。最高位为1表示负数,最高位为0表示正数。
一字节的有符号数取值范围为-128~127。
注意:将-0看成-128。
定义无符号数:
(1)方式一:默认方式(推荐)。
int num;
(2)方式二:使用关键字signed。
signed int num;
三、无符号数
没有符号位,所有二进制都是数据位。在同样的位宽下,无符号整数类型可以表示的最大值是有符号整数类型的两倍,但不能表示负数。
一字节的无符号数取值范围为0~255。
定义无符号数: 使用关键字unsigned。
unsigned int num;
总结
- 实型数据类型:指具有小数点的数字,包括float、double和long double三种类型。
- float:单精度浮点数,占用4个字节。
- double:双精度浮点数,占用8个字节。
- long double:扩展精度浮点数,占用16个字节。
- 有符号数:指可以表示正数、负数和0的数字,包括char、short、int和long四种类型。
- char:字符类型,通常占用一个字节,取值范围为-128到127或0到255。
- short:短整型,占用2个字节,取值范围为-32768到32767。
- int:整型,占用4个字节,取值范围为-2147483648到2147483647。
- long:长整型,占用4个字节或8个字节,取值范围为-2147483648到2147483647或-9223372036854775808到9223372036854775807。
- 无符号数:指只能表示非负数(0及正整数)的数字,包括unsigned char、unsigned short、unsigned int和unsigned long四种类型。
- unsigned char:无符号字符类型,占用一个字节,取值范围为0到255。
- unsigned short:无符号短整型,占用2个字节,取值范围为0到65535。
- unsigned int:无符号整型,占用4个字节,取值范围为0到4294967295。
- unsigned long:无符号长整型,占用4个字节或8个字节,取值范围为0到4294967295或0到18446744073709551615。
需要注意的是,在使用实型、有符号数和无符号数时,应该根据需要选择合适的数据类型,避免数据溢出和精度损失的问题。同时,在进行数据类型转换时,也应该注意数据范围和精度的差异,避免数据丢失或产生错误的结果。