C++数据类型
C++数据类型
零、进制
十进制
十进制则为生活中最常用的进制
0 1 2 3 4 5 6 7 8 9 10
二进制
计算机的二进制数据存储中Bit为最小的存储单位。
以0或1为一个bit(比特) 0 1
而8个bit则称为一个byte(字节) 00000000 00000001
在二进制中,正数字从0开始,每增加1进一位,负数则是以1为字节位每次减少1
| 二进制 | 十进制 |
|---|---|
| 11111101 | -3 |
| 11111110 | -2 |
| 11111111 | -1 |
| 00000000 | 0 |
| 00000001 | 1 |
| 00000010 | 2 |
| 00000011 | 3 |
十六进制
十六进制常用于内存地址表示等
十六进制从09以及AF,分别由四个bit对应
| 二进制 | 十六进制 |
|---|---|
| 0000 | 0 |
| 0001 | 1 |
| 0010 | 2 |
| 1010 | A |
| 1011 | B |
| 1110 | E |
| 1111 | F |
二进制,十进制与十六进制参考
| 二进制 | 十进制 | 十六进制 |
|---|---|---|
| 1111 1110 | -2 | FE |
| 1111 1111 | -1 | FF |
| 0000 0000 | 0 | 0 |
| 0000 0001 | 1 | 1 |
| 0000 0002 | 2 | 2 |
| 0000 1101 | 13 | D |
| 0001 0100 | 20 | 14 |
| 0001 1110 | 30 | 1E |
一、基本数据类型
| 数据类型 | 描述 | 作用 | 大小(字节) | 取值范围 |
|---|---|---|---|---|
bool |
布尔型 | 表示真或假 | 1 | true或false |
char |
字符型 | 字符类型,通常用于存储 ASCII 字符 | 1 | -128 到 127 或 0 到 255 |
int |
整型 | 存储数字 | 4 | -2,147,483,648 到 2,147,483,647 |
short |
短整型 | 存储数字 | 2 | -32,768 到 32,767 |
long long |
长整型 | 存储数字 | 8 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
float |
浮点型 | 单精度浮点数,存储带有小数点的数字 | 4 | 约 ±3.4e±38(6-7 位有效数字) |
double |
双浮点型 | 双精度浮点数,存储带有小数点的数字 | 8 | 约 ±1.7e±308(15 位有效数字) |
void |
无类型 | 无类型 | 0 | 无 |
实例:
| 数据类型 | 命名变量 | 取值 | 十进制 | 二进制 |
|---|---|---|---|---|
bool |
bool boolvalue = true; | true | 1 | 000000001 |
char |
char charvalue = ‘g’; | g | 103 | 01100111 |
int |
int intvalue = -3; | -3 | -3 | 11111111,11111111,11111111,11111101 |
float |
float floatvalue = 3.14; | 3.14 | 3.14 | 略 |
二、数据类型修饰符
| 数据类型 | 描述 | 示例 |
|---|---|---|
| signed | 表示有符号类型(默认) | signed int x = -10; |
| unsigned | 表示无符号类型(0/正) | unsigned int y = 10; |
| short | 表示短整型(一般为2字节) | short int z = 100; |
| long | 表示长整型(8/16字节) | long int a = 100000; |
| const | 表示常量,值不可修改 | const int b = 5; |
三、派生数据类型
派生数据类型在此仅作基本描述,具体含义与案例点击词条进入
| 数据类型 | 描述 | 示例 |
|---|---|---|
| 数组 | 相同类型元素的集合 | int arr[5] = {1, 2, 3, 4, 5}; |
| 指针 | 存储变量内存地址的类型 | int* ptr = &x; |
| 引用 | 变量的别名 | int& ref = x; |
| 函数 | 函数类型 | int func(int a, int b); |
| 类 | 用户定义的数据类型,支持封装、继承和多态 | class MyClass { … }; |
| 枚举 | 用户定义的整数常量集合 | enum Color { RED, GREEN, BLUE }; |
四、类型转换
C++隐式类型转换,将一种数据类型转换为另一种数据类型
实例:
#include <iostream>
int main()
{
//定义示例变量
char a = 1;
double doubleValue = 100.1;
float floatValue = 100.1f;
long long longlongValue = 100L;
int intValue = 100;
short shortValue = 100;
char charValue = 'b';
//双精度浮点数与单精度浮点数转换
doubleValue = floatValue; // 无损失
floatValue = doubleValue; // 损失精度
//浮点数转换为整型
intValue = floatValue; // 截断小数位,比如 1.1 和 1.9 都会变成 1
//整型与长扩展精度浮点数转换
longlongValue = intValue; // 无损失
intValue = longlongValue; // 如果 long 里的值大于 int 最大值,会溢出
// int的范围 -2147483648 (-2^31) ~ 2147483647 (2^31-1)
longlongValue = 9223372036854775807L; //数字后加L代表长整型long
intValue = longlongValue;
// 有符号整数类型中,最高位(左边)代表了这个数字的符号
// 比如 10000000 00000000 00000000 00000001 是 -1
// 比如 00000000 00000000 00000000 00000001 是 1
// longlong 在转换为int的过程中,前4字节被截断,只保留了后4字节
std::cout << longlongValue << std::endl; //将整段输入编译器中运行查看结果
std::cout << intValue << std::endl; //将整段输入编译器中运行查看结果
// 同样,char也是
// char 范围 -128(-2^7) ~ 127(2^7-1)
intValue = 128;
charValue = intValue;
std::cout << (int)charValue << std::endl; //将整段输入编译器中运行查看结果
// 强制类型转换
intValue = (int)charValue;
// 获取变量内存大小(字节数)
//sizeof是C++中的一个运算符,用于计算变量或数据类型所占的内存字节数。
std::cout << sizeof(int) << std::endl; // 通过类型获取
std::cout << sizeof(intValue) << std::endl; // 通过变量获取
std::cout << sizeof(longlongValue) << std::endl;
std::cout << sizeof(charValue) << std::endl;
// 也可以获取原生数组变量的大小
int intArray[2] = { 0, 1 };
std::cout << sizeof(intArray) << std::endl;
}
C++数据类型
https://chooseqiu.com/posts/1b32398c/