C++<第一篇>:基本数据类型

一、整数类型

基本数据类型是最基础的也是最根本的,主要是了解基本数据类型所占用的字节个数

基本数据类型分为有符号和无符号,分别用signedunsigned表示。

整型的基本数据类型如下:

整型 字节 取值范围 占位符
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位机。

image.png

下面,定义五种整数类型:

// 整数类型=========================

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_tint32_tint64_tint16_tint32_tint64_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;

[本章完...]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容