2-1 C++内置类型
目录
2.1.1 算术类型(Arithmetic Types)
概览
分类
整型与浮点型
- 整型: short\int\long\long long\char
- 浮点型: float\double
有符号和无符号
表示范围有差异,如 char: -128-127; unchar: 0-255
存储
单位转换
-
1bit表示1个二进制数。
-
1byte=8bit,是可寻址的最小内存块,与一个整数相关联(该整数称为地址)
-
1word=4/8byte,是存储的基本单元
常见类型的大小
Type | Minimum Size(byte) |
---|---|
bool | 1 |
char | 1 |
short | 2 |
int | 4 |
long | 4 |
long long | 8 |
float | 4 |
double | 8 |
-
实验
#include<iostream> using namespace std; int main(){ cout<<"bool = "<<sizeof(bool)<<endl; cout<<"char = "<<sizeof(char)<<endl; cout<<"short = "<<sizeof(short)<<endl; cout<<"int = "<<sizeof(int)<<endl; cout<<"long = "<<sizeof(long)<<endl; cout<<"long long = "<<sizeof(long long)<<endl; cout<<"float = "<<sizeof(float)<<endl; cout<<"double = "<<sizeof(double)<<endl; return 0; }
-
结果
几点说明
- char 大小为 1byte , bool大小不定
- int 一般为 32bite, short\long\long long大小随系统和编译器而定
- int >= short
- long >= int
- long long > int
- float 小数点后一般保留6位, double一般保留10位
选择
- 整数要么用int,要么用long long。【避免使用char\short和long】
- 浮点数尽量用double
2.1.2 类型转换(Type Conversion):关于int 和 unsigned int
以 32-bit int为例
计算值
-
unsigned int
取值范围为0~4294967295【1+2+…232】 -
当赋予
unsigned int
的值val在此范围之外【最常见的情况是unsigned int 的值为一个负数】时,unsigned int
= val对4294967296取模-
例程
#include<iostream> using namespace std; int main(){ unsigned int u = -1; cout<<u<<endl; return 0; }
-
结果:4294967295【-1对4294967296取模】
-
取模与取余
-
取余时商往0靠
-
取模时商往负无穷靠
-
取模的性质:若a+b==模,那么c-a等价于c+b
常见错误:给unsigned int 赋负值
-
例程
#include<iostream> using namespace std; int main(){ unsigned int u = 10; int i = -42; cout<< u+i << endl; return 0; }
-
结果:4294967264
2.1.3 字面值常量(literal)
字面值常量(literal)可以理解为赋给变量(variable)的值(value)。一般左右赋值符号(=)的右值。
整型和浮点型字面量
- 整型
- 十进制:
20
- 八进制:开头加0.
024
- 十六进制:开头加0x。
0x14
20
= =024
= =0x14
- 十进制:
- 浮点型
- 小数点表示:3.1415
- 科学计数法:3.1415E0/3.1415e0