一、整数类型
基本数据类型是最基础的也是最根本的,主要是了解基本数据类型所占用的字节个数。
基本数据类型分为有符号和无符号,分别用signed和unsigned表示。
整型的基本数据类型如下:
整型 | 字节 | 取值范围 | 占位符 |
---|---|---|---|
int | 4 | -2,147,483,648 到 2,147,483,647 | %d |
unsigned int | 4 | 0 到 4,294,967,295 | %u |
short | 2 | -32,768 到 32,767 | %hd |
unsigned short | 2 | 0 到 65,535 | %hu |
long | 4 | -2,147,483,648 到 2,147,483,647 | %ld |
unsigned long | 4 | 0 到 4,294,967,295 | %lu |
char | 1 | -128 到 127 | %c |
unsigned char | 1 | 0 到 255 | %c |
计算机有:16位机、32位机、64位机。早起的计算机基本都是16位的,当然现在的计算机基本都是64位了。
在不同的机器上,基本数据类型的大小可能是不同的,我们不需要深究哪里不同,使用sizeof(基本数据类型)可以轻松查看当前基本数据类型在当前机器上所占的字节数。
下面开始亲自演示一下基本数据类型到底占用了多少字节。
由于现在64位机已经普及,这里选择64位机。
下面,定义五种整数类型:
// 整数类型=========================
signed short a = 1; // 有符号短整数(signed可以省略)
unsigned short b = 1; // 无符号短整数
signed int c = 2; // 有符号整数(signed可以省略)
unsigned int d = 2; // 无符号整数
signed long e = 3; // 有符号整数(signed可以省略)
unsigned long f = 3; // 无符号整数
signed long int g = 4; // 有符号整数(signed可以省略)
unsigned long int h = 4; // 无符号整数
signed long long i = 5; // 有符号长整数(signed可以省略)
unsigned long long j = 5; // 无符号长整数
打印它们占用的字节数:
cout << "signed short 占用字节数:" << sizeof(signed short) << endl;
cout << "unsigned short 占用字节数:" << sizeof(unsigned short) << endl;
cout << "signed int 占用字节数:" << sizeof(signed int) << endl;
cout << "unsigned int 占用字节数:" << sizeof(unsigned int) << endl;
cout << "signed long 占用字节数:" << sizeof(signed long) << endl;
cout << "unsigned long 占用字节数:" << sizeof(unsigned long) << endl;
cout << "signed long int 占用字节数:" << sizeof(signed long int) << endl;
cout << "unsigned long int 占用字节数:" << sizeof(unsigned long int) << endl;
cout << "signed long long 占用字节数:" << sizeof(signed long long) << endl;
cout << "unsigned long long 占用字节数:" << sizeof(unsigned long long) << endl;
输出结果如下:
image.png其中,long int
可以简写为long
,本质上long int
就是long
。
从字节数上来分析,在当前64位机上,int和long都占用4个字节,但是long long却是8个字节。
在实际开发中,推荐使用:short、int、long long,或者自己使用自定义的类型:int16_t
、int32_t
、int64_t
,int16_t
、int32_t
、int64_t
可读性极好,可以一眼看出占用的字节数。
二、字符类型
整型的基本数据类型如下:
字符型 | 字节 | 取值范围 | 占位符 |
---|---|---|---|
char | 1 | -128 到 127 | %c |
unsigned char | 1 | 0 到 255 | %c |
字符类型也分为有符号和无符号。
// 字符类型=========================
char k = '6'; // 字符指针数据类型,默认是有符号的
cout << "char 占用字节数:" << sizeof(char) << endl;
unsigned char l = '6';
cout << "unsigned char 占用字节数:" << sizeof(unsigned char) << endl;
char只占用一个字节。
image.png它和整型一样,也有一个自定义的数据类型:int8_t,可以使用 int8_t 定义
int8_t k = '6'; // 字符指针数据类型,默认是有符号的
三、浮点类型
浮点型 | 字节 | 精度 | 占位 |
---|---|---|---|
float | 4 | 6位小数 | %f |
double | 8 | 15位小数 | %lf |
long double | 8 | 19位小数 | %Lf |
其中, long double 比 double 更为精准。
float num = 1.0f;
cout << "float 占用字节数:" << sizeof(float) << endl;
double num2 = 1.0;
cout << "double 占用字节数:" << sizeof(double) << endl;
long double num3 = 1.0;
cout << "long double 占用字节数:" << sizeof(long double) << endl;
image.png
四、布尔类型
布尔类型使用bool来表示,它只占一个字节。
bool isTrue = true;
if (isTrue) {
cout << "this is true" << endl;
}
cout << "bool 占用字节数:" << sizeof(bool) << endl;
image.png
if(a),a可以是整型,如果a=0,那么就是false,如果a为非0,那么就是true。
五、总结
(1)如果要定义一个有符号数据,关键字signed是可选的,可以写也可以不写;
(2)如果要定义一个无符号数据,关键字unsigned必须要写;
(3)有符合和无符号不影响占用的字节数;
(4)在实际开发中,整型和字符类型尽量使用int8_t、int16_t、int32_t、int64_t;
[本章完...]
网友评论