跳转至

08 C++中的变量

1. 变量类型

C++中,不同变量类型之间==唯一的区别==就是==size(大小)==,即这个变量占用了多少内存

数据类型的实际大小取决于编译器,可能会由于编译器不同而大小不一样

1.1 int

int类型是为了在一定范围内存储整数,因为它大小是 4 个字节

\(1byte=8bits,4bytes=32bits\)

变量是==有符号数(signed)==,即有一位需要来表示符号(\(\pm\)),因此只有 31 位留给实际数字表示。 1 bit 可为“0”或“1”, \(2^{31}=2,147,483,648\)(21 亿多),由于还需要表示 0,所以能表示的最大数字是\(2^{31}-1\)

\(\therefore\) int取值范围\((-2147483648 , 2147483647)\)

只想要正数怎么办?

\(\ce { -> }\)无符号数(unsigned), 可表示\(2^{32}\) ^7a7e3b

unsigned int

1.2 常见的类型

char short int long long long (long int)
1 byte 2 bytes 4 bytes 4 bytes 8 bytes 4 bytes

任何一个类型前都可以加unsigned

1.3 char

对某些数据类型做假设

char a = 'A';  // A

char a = 65;   //  A

因为将一个char传入std::cout,会把它当作一个字符而不是数字

short a = 65;  // 65

short a = 'A'; // 65

1.4 存小数

float & double

float占用 4 个字节,通过在数字后面加"F/f"与double进行区分 double占用 8 个字节

1.5 bool

0 for false anything except 0 for true

占用 1 个字节

由于内存寻址无法直接访问 bit,只能寻址到 bytes,所以想少占内存可以巧妙地把 8 个 bools 存在一个 byte 里

2. sizeof 操作符

std::cout << sizeof(bool) << std::endl;   // 1

3. pointers & references

指针: 类型* bool*

引用: 类型& bool&