基本内置类型
- bool
- char
- int
- float
- double
- void
- wchar_t ⇒ short int
存储范围
可以这样 sizeof(int) 来确认 int 占用字节数
-
char,1字节,-128~127 或 0~255
-
wchar_t,2或4字节,1 个宽字符
-
int,4字节,-214 … 9个零
-
short int,2字节,-32768~32767
-
long int,8字节,-922 … 18个零
-
float,4字节,-34 … 7个数字
-
double,8字节,-17 … 15个数字
-
long double,16字节,18-19位数字
typedef 声明新名字
语法:typedef type newName;
比如使用 typedef int feet; 可以告诉编译器 feet 是 int 的另一个名称
enum 枚举类型
这里隐含的数值 red = 0,green = 5,blue = 6
enum color {
red,
green = 5,
blue
};
下面的代码声明了一个 color 类型变量,且变量值被赋予为 blue
color c;
c = blue;
类型转换
- 静态转换:不进行任何类型检查,相似类型之间转换比如 int → float
int i = 10;
float f = i;
- 动态转换:基类指针或引用 ⇒ 派生类指针或引用,如果不能进行转换会返回空指针 / 引发异常
class A {};
class B : public A {};
int main() {
A* ptr_a = new B;
B* ptr_b = dynamic_cast<B*>(ptr_a); // 基类指针 -> 派生类指针
}
- 常量转换:将 const 类型的对象转换成非 const 的,不能改变对象的类型
int main() {
const int i = 10;
int& r = const_cast<int&>(i);
cout << r;
}
- 重新解释转换:将一个数据类型的值重新解释为另一个数据类型
int i = 10;
float f = reinterpret_cast<float&>(i); // 重新解释将int类型转换为float类型