类型
浮点数
三种:
-
float
4个字节;7位精度 -
double
8个字节;15位精度 -
long double
8个字节;15位精度
表达:
1、 小数后加f或F表单精度,例如:100.0f、25.1F
2、不带后缀小数一律为double类型,例如: 100.0、25.1
3、后缀为L或l的为long double 类型,例如:100.0l、25.1L
类型转换
隐式转换
隐式转换默认优先级表如下:
longdouble | 高 |
---|---|
double | ⬇ |
float | ⬇ |
unsigned long long | ⬇ |
long long | ⬇ |
unsigned long | ⬇ |
long | ⬇ |
unsigned int | ⬇ |
int | 低 |
隐式转换举例:也是很常见的一道面试题
int main()
{
int a{ 500 };
unsigned b{ 1000 };
std::cout << a - b << std::endl;
}
结果: 是一个很大的数,并不是想象中的-500;
理由如下;
因为a-b的类型输出,所以编译器进行隐式转换,而int 和 unsigned相比,优先级低。所以转换成了unsigned无符号型,又由于相减理论上应该是有符号的,首位符号位为1,所以是一个很大的数
解决办法:
1、int 换成 long
2、显式转换
显式转换
1、c++风格
格式: 转换后变量 = static_cast(转换前变量)
int main()
{
int a{ 500 };
unsigned b{ 1000 };
std::cout << a - static_cast<int>(b) << std::endl;
}
2、c风格
int main()
{
int a{ 500 };
unsigned b{ 1000 };
std::cout << a - (int)b << std::endl;
}