一:隐式转换
类型转换顺序,
下面遇见上面的,会将下面转换成上面的 |
long double |
double |
float |
unsigned long long |
long long |
unsigned long |
long |
unsigned int |
int |
short或者char |
例如下面代码
int a = -3;
unsigned int b = 2;
//此处是隐式转换
std::cout <<a+b << std::endl;
该代码的结果并不是负1,因为b的权重更高,所以会将负1转换成unsigned int进行输出,上面代码可以用下面方式正确表示
int a = -3;
unsigned int b = 2;
int c = a + b;
a += b;
std::cout << c << std::endl;
std::cout << a << std::endl;
也就是说,可以将结果再次转换成int即可
二:显式转换
int a = -3;
unsigned int b = 2;
//此处是显示转换
std::cout << (int)(a+b) << std::endl;
三:static_cast
这在C中是没有的,只存在于C++
用法:static_cast<目标类型>(要转换的内容)
int a = -3;
unsigned int b = 2;
std::cout << static_cast<int>(a+b) << std::endl;