c++ 学习篇之重温类型转换和数据类型

类型

浮点数

三种:

  • 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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值