1、变量
- 不同类型变量之间的唯一区别是:这个变量会占用多少内存。
一个int类型变量,它的大小范围在正负20亿左右,任何比20亿大的数字,都需要比int类型更大的数据类型存储。
int var = 8; //-2b ~ 2b
因为一个int类型占用4字节,即32比特,1比特占8位,因为int是有符号的,所以它可以是一个负数,这就需要一位来做符号位,所以正常表示数字的只有31位,即2的31次方,即2^31,即2147483648,大约21亿多一点,所以一个int最大可以表示到21亿的正值,最小可以表示到负21亿的负值。
如果不想要负值可以吗,想把符号位也作为数据的一位可以吗?当然可以,这就是无符号数,用unsigned表示,最大为42亿多。
unsigned var = 8;//最大表示到:4294967296
- float单精度小数和double双精度小数,float占用4个字节,double占8字节。
float一般在定义的时候,需要在小数后面加f,不然即使是float类型,也会变为double类型。
float var = 5.5f;//不加f,默认为double类型
- 计算类型所占的字节,用sizeof( 类型 )
std::cout << "char: " << sizeof(char) << std::endl;
std::cout << "bool: " << sizeof(bool) << std::endl;
std::cout << "short: " << sizeof(short) << std::endl;
std::cout << "int: " << sizeof(int) << std::endl;
std::cout << "unsigned: " << sizeof(unsigned) << std::endl;
std::cout << "float: " << sizeof(float) << std::endl;
std::cout << "double: " << sizeof(double) << std::endl;
std::cout << "long: " << sizeof(long) << std::endl;
std::cout << "long long: " << sizeof(long long) << std::endl;
//打印结果
char: 1
bool: 1
short: 2
int: 4
unsigned: 4
float: 4
double: 8
long: 4
long long: 8