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/
作者
Chooseqiu
许可协议