C++学习笔记(类型转换)

本文深入探讨了从非布尔类型到布尔类型、布尔类型到非布尔类型、浮点到整型、整型到浮点以及其他类型到无符号类型的转换过程及注意事项。详细解释了负数在内存中以反码形式表示的原理,并提供了大数赋给带符号数时的特殊处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 非布尔类型到布尔类型

  当我们把一个非布尔类型的算术值赋给布尔类型时,初始值是0则结果为false,否则结果为true。


2. 布尔类型到非布尔类型

  当我们把一个布尔值赋给非布尔类型时,初始值为false则结果为0,初始值为true,则结果为1.


3. 浮点到整型

  当我们把浮点类型转换成整型时,进行近似处理,保留整数部分。


4. 整型到浮点

  把整型赋值给浮点类型,小数补0。整型占用空间大可能会导致精度损失。


5. 其他类型到无符号类型

 赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。

  特别的:有符号类型到无符号类型转换:

unsigned char a=-1;    //a=255
unsigned char b=-2;    //b=254

  理解这里的重点在于:类型转换不会改变内存中数值的表示,只会用不同的方式重新解释。

  负数在内存中以反码的方式表示,所以-1本身为:1000 0001     反码为原码取反加1,所以在内存中表示为:1111 1111,因此被解释成255。

  无符号char表示的数值总数为0~255,总共256个,因此取余后为255.


6. 大值赋值给带符号数

  给带符号数一个超出它表示范围的值时,结果是未定义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值