C++之数据类型转换

定义:数据类型转换是将值从一个数据类型转换成另一种数据类型。

数据类型转换分为隐式转换和强制转换两种。

1.隐式转换

隐式转换:不需要用户干预,编译器自动进行的数据类型转换。

转换原则:

     *  基本数据类型的转换以取值范围作为转换基础(目的是保证精度不缺失)。

     *  隐式转换发生在  小->大  的转换中。

隐式转换发生的条件:

    * 混合类型的算术运算表达式中

int i = 3;
double j = 3.1;
i + j;//i会先转换成double类型,然后再做加法运算

     *不同类型的赋值操作

int i = 3;
double j = i;//3会被转换成double类型3.0 

C++隐式转换的规则

比如:当char和int进行加法运算时,char会隐式转换成int。当char,int,unsigned int进行加法运算时,char先转换成int,再和int一起转换成unsigned。 

2.强制转换

语法:(类型说明符)表达式

double x = 1.4;

int y = (int)x; //y等于1  将x进行取整操作,将小数部分截取掉

double z = (double)3;  //z等于3.0

3.类型转换的隐患

   类型转换存在两个隐患:数据截断和精度丢失

    主要原因就是目标类型能表达的数值范围或精度比原类型的小。 

        *数据截断:当大数向小数转换时发生

比如:

int x = 65538;

unsigned short y = (unsigned short)x;

此时 y = 2

因为x是4字节的 65538的二进制是1 0000 0000 0000 0010,

而unsigned short是二个字节,可以表示16位,此时最高位的1将会被截断丢掉,那么就剩下

0000 0000 0000 0010 转换成十进制就是2了。

       *精度丢失:当高精度浮点数向低精度浮点数转换的时候发生。

          如:double转换成float,long double 转换成double

          

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值