Chapter 2:数据类型
一、数据类型
类型,是相似的数据所据拥有的共同特征
C++内简单数据类型:字符型,整型,浮点型,布尔类型
(1).字符型 char
a.用单引号''表示字符,用双引号""表示字符串
b.ASCII编码
计算机中所有数据(包括字符)以二进制的形式存储,而ASCII码表中记录的就是每个字符的对应编码(128个)

其中:字符 A~Z 的ASCII码值从 65~90
字符 a~z 的ASCII码值从 97~122
对应的大小写字符(a和A)的ASCII码值的差值为 32
数字字符 0~9 的ASCII码值从 48~57
换行 \\n 的ASCII码值为 10
ASCII码值从 0~31 这32个字符为不可打印字符,无法打印在屏幕上观察
举例1:用ASCII编码打印对应字符
明确:一个字符的本质就是它的ASCII码值
//用ASCII编码打印对应字符
#include <iostream>
using namespace std;
int main()
{
char n = 65; //A的ASCII编码为 65
cout << n << endl; //屏幕上会打印出 A
return 0;
}
举例2:char类型变量只能接受单个字符
#include <iostream>
using namespace std;
int main()
{
char n;
cin >> n; // 输入 65 ,"65"属于两个字符
cout << n << endl; // 输出 6 ,而不是输出 ASCII编码65 对应的字符 A
// 因为 char类型 变量n 只能接受第一个字符 '6',所以输出结果为 6
return 0;
}
举例3:输入数字 65 得到字符 'A',需将变量改为int接收数字,再强制转换为char
#include <iostream>
using namespace std; //standard标准
int main()
{
int n;
cin >> n; // 输入 字符A 的 ASCII编码65 并用 int类型存储
char m = (char)n; //强制类型转换
cout << m << endl; // 输出字符A
return 0;
}
//endl 是输出流的操作符,只能用在 cout 后面,不能用 cin 后面
(2).整型类型(整数)
在 C和C++ 中被分为四大类
short 短整型
int 整型
long 长整型
long long 更长的整型
#include <iostream>
#include <climits> // 包含整型范围的常量定义
using namespace std;
int main() {
// 1. 查看各整型占用的字节数(内存大小)
cout << "short 占用字节数:" << sizeof(short) << endl;
cout << "int 占用字节数:" << sizeof(int) << endl;
cout << "long 占用字节数:" << sizeof(long) << endl;
cout << "long long 占用字节数:" << sizeof(long long) << endl;
// 2. 查看各整型的数值范围
cout << "short 范围:" << SHRT_MIN << " ~ " << SHRT_MAX << endl;
cout << "int 范围:" << INT_MIN << " ~ " << INT_MAX << endl;
cout << "long 范围:" << LONG_MIN << " ~ " << LONG_MAX << endl;
cout << "long long 范围:" << LLONG_MIN << " ~ " << LLONG_MAX << endl;
return 0;
}
运行结果:

C/C++ 的标准规定:sizeof(long) >= sizeof(int)
所以sizeof(long) 的计算结果可能是 4或8,取决于编译器
(3).浮点型(小数)
在 C和C++ 中被分为三大类:
float 单精度浮点型
double 双精度浮点型
long double 长双精度浮点型
flodt num = 5.5; // 5.5 会被编译器识别为 double类型
float num = 5.5f; // 5.5 会被编译器识别为 float类型
C/C++中小数书写形式:
3.14 编译器默认识别为 double类型
3.14f 编译器默认识别为 float类型
1e5 科学计数法表示形式,表1.0*10^5
1e5+10 100010
1.23e5+10 123010
(4).布尔类型(bool)
布尔类型变量的值为 true 或 false,用于表示真或假
在C/C++中,0表示假,非0表示真
bool flag = true;
二、signed 和 unsigned
signed(有符号的) 和 unsigned(无符号的) 关键字用于修饰字符型和整型类型
signed 表示一个类型带有正负号,包含负值
unsigned 表示一个类型不带有正负号,只能表示0和正整数
int n;
signed int n;
unsigned int n;
对于 整型类型 默认带有正负号,其signed可以省略,如 int == signed int
但是 char类型 的符号性取决于编译器,即 char 不一定等于 signed char
常见编译器中,char == signed char
将变量声明为 unsigned,同样长度的内存能够表示的最大整数值 增大一倍
//注意 unsigned的使用 对输入数据的存储造成的影响
#include <iostream>
using namespace std;
int main()
{
unsigned int num = 10;
cout << num << endl; //输出10
cin >> num; //输入 -5
cout << num << endl; //输出4294967291
return 0;
}
三、数据类型长度
(1). sizeof 操作符
sizeof 是一个关键字,也是操作符,专门用于计算特定数据类型的长度,单位是字节
sizeof操作符的 操作数可以是类型,也可以是变量名或表达式
用法:sizeof(操作数)
当操作数不是类型,括号可以省略
其计算结果为 size_t 类型,为无符号整数
sizeof(char) –> 1字节
sizeof(bool) –> 1字节
sizeof(float) –> 4字节
sizeof(double) –> 8字节
sizeof(long double) –> 16字节
数据类型的长度决定了 由这个数据类型定义出来的变量能够存储的数值的大小
(2).各类型取值范围(重要)
整型类型:
| 类型 | 名称 | 内存占用 | 数值范围(以常见的 64 位系统为例) |
| short | 短整型 | 2字节 | -2¹⁵ ~ 2¹⁵ -1(大约为±10⁴) |
| int | 整型 | 4字节 | -2³¹ ~ 2³¹ -1(大约为±10⁹) |
| unsigned int | 无符号整型 | 4字节 | 0 ~ 2³² -1 |
| long | 长整型 | 4/8字节 | -2³¹ ~ 2³¹ -1(大约为±10⁹) / -2⁶³ ~ 2⁶³ -1(大约为±10¹⁸) |
| long long | 更长的整型 | 8字节 |
-2⁶³ ~ 2⁶³ -1(大约为±10¹⁸) |
C/C++ 的标准规定:sizeof(long) >= sizeof(int)
所以sizeof(long) 的计算结果可能是 4或8,取决于编译器
浮点数类型:
| 类型 | 名称 | 内存占用 | 数值范围(以常见的 64 位系统为例) |
| float | 单精度浮点型 | 4字节 |
精度:6~7 位 有效数字范围:±10⁻³⁸ ~ ±10³⁸ |
| double | 双精度浮点型 | 8字节 |
精度:15~17 位 有效数字范围:±10⁻³⁰⁸~ ±10³⁰⁸ |
| long double | 长双精度浮点型 | 8/16字节 |
精度:至少 15 位有效数字(16 字节版本可达 18~19 位) 范围:±10⁻⁴⁹³² ~ ±10⁴⁹³²(16 字节版本) |
-
“有效数字” 是核心:浮点数的 “精度” 不是 “小数位数”,而是全部数字的位数(比如float的123456.789只能精确到123456,后几位是近似值);
-
内存与范围 / 精度的关系:内存越大,精度越高、表示的数值范围越广(double是日常最常用的,精度和范围远优于float);
-
long double 的特殊性:64 位系统中,Windows 通常和double一样占 8 字节,Linux/macOS 多为 16 字节,新手日常用double即可,无需刻意用long double;
-
无符号浮点数:C/C++ 中浮点数没有 unsigned 版本,默认都能表示正负值
(3).typeof 关键字
用途:给类型重命名,简化类型
用法:typedef 原类型名 新类型名;
网硕互联帮助中心





评论前必须登录!
注册