目录儿
4 变量
4.1 原始数据类型
原始数据类型是构建C++
程序的最基础数据类型
所有数据都是基于这些原始数据类型来存储的
后面各种第三库的包装类型、或是自定义的数据类型,其底层都是这些原始数据类型。
字符 char
char
类型用于(在一定范围内)存储整型数据(表面上是存储字符)
char
类型数据一般占据 1 byte
/ 8 bit
,具体大小由编译器决定
char variable_name = 65;
char variable_name = 'A';
如果不作显示声明,char
类型数据默认是有符号的:signed
当然,我们可以显示地把一个char
数据声明为无符号整型:unsigned
但是一般不会这么做,因为没有意义
我们定义char
类型基本都是用于存储字符,字符对应的编码都是正的整型数据
unsigned char variable_name; // 不推荐
一般而言
char
类型是用来表示存储的数据是一个字符数据,所以cout
打印char
类型数据的时候会把存储的整型根据编码表转成对应的字符进行输出。
整型 short
short
类型数据一般占据 2 byte
/ 16 bit
,具体大小由编译器决定
short variable_name = 65;
short variable_name = 'A';
如果不作显示声明,short
类型数据默认是有符号的:signed
当然,我们可以显示地把一个short
数据声明为无符号整型:unsigned
unsigned short variable_name;
int_33">整型 int
int
类型用于(在一定范围内)存储整型数据
int
类型数据一般占据 4 byte
/ 32bit
,具体大小由编译器决定
int variable_name = 65;
int variable_name = 'A';
如果不作显示声明,int
类型数据默认是有符号的:signed
当然,我们可以显示地把一个int
数据声明为无符号整型:unsigned
unsigned int variable_name;
整型 long
long
类型用于(在一定范围内)存储整型数据
long
类型数据一般占据 4 byte
/ 32 bit
,具体大小由编译器决定
long variable_name = 65;
long variable_name = 'A';
如果不作显示声明,long
类型数据默认是有符号的:signed
当然,我们可以显示地把一个long
数据声明为无符号整型:unsigned
unsigned long variable_name;
整型 long long
long long
类型用于(在一定范围内)存储整型数据
long long
类型数据一般占据 8 byte
/ 64 bit
,具体大小由编译器决定
long long variable_name = 65;
long long variable_name = 'A';
如果不作显示声明,long long
类型数据默认是有符号的:signed
当然,我们可以显示地把一个long long
数据声明为无符号整型:unsigned
unsigned long long variable_name;
float_69">单精度浮点型 float
float
类型用于(在一定范围内)存储浮点数据
float
类型数据一般占据 4 byte
/ 32 bit
,具体大小由编译器决定
float variable_name = 1.2f;
给
float
类型的变量赋值时需要加上一个f/F
,否则编译器会把这个浮点数当成double
处理:
加了f/F
就向编译器说明这是个float
类型的数据:
双精度浮点型 double
double
类型用于(在一定范围内)存储浮点数据
double
类型数据一般占据 8 byte
/ 64 bit
,具体大小由编译器决定
double variable_name = 1.2;
布尔型 bool
bool
类型用于代表ture
/false
bool
类型数据一般占据 1 byte
/ 8 bit
bool variable_name = true;b
将bool
类型的数据打印输出时以0
代表false
以其他非0
数字,通常是1
代表true
,具体取决编译器
其实
bool
类型的数据只占用了1bit
,但为什么它确需要占据1byte
这么多呢?
原因是内存寻址的时候是以byte
为最小单元的,因此最小的数据类型只能小到1byte
,哪怕它实际用到的内存大小比1byte
小!
4.2 sizeof 关键字
sizeof
关键字可以获取某个变量,或者具体的数据类型所占据的字节数
int main() {
float flo_var = 1.2f;
int int_var = 5654;
std::cout << sizeof(flo_var) << std::endl; // 4
std::cout << sizeof int_var << std::endl; // 4
std::cout << sizeof(double) << std::endl; // 8
std::cin.get();
}
不同版本的编译器对加不加
()
要求可能不同,但是规范而言最好加上sizeof(xxx)
5 指针和引用
有了原始数据类型之后,我们可以把这些原始数据类型转换成指针或引用
比如现在有一个bool
类型的变量
bool bool_var = false;
转成成指针
bool* bool_var = false;
转换成引用
bool& bool_var = false;