CPP学习 类型转换难点

CPP类型转换难点知识分析
含有无符号类型的表达式:
【1】在C++程序编写过程中,若既有无符号数又有int值,int值会被自动类型转换为无符号类型
例:
在这里插入图片描述
在第二个u+i的表达式中我们注意到答案变成了一个极大的整数

注意:
1.在进行无符号数与int类型的加减时,需要把int类型的数转换为无符号类型(这里的int值只是示例,其他的类型与他对应的无符号类型运算时也要进行转换)
2.转换类型方法
取模!(视编译器情况而定)图中所示,int类型为32位,能够储存的最大数为2的32次方,用int值取最大数的模,即转换为无符号类型。

【2】 从无符号数中减去一个数
示例:
在这里插入图片描述
注意
1.两个无符号数相减时,将他看作与前方的减号是一体的!再按照【1】中进行运算。

总结:1.在进行转换时,有符号数与无符号数必须具有相同的字(4个字节)长,转换后,位数不变。
2.对于这一部分的理解不清在于对于数据在机器中的存储形式的不清楚,必须明确一点,对于机器来说,int的1与无符号数的1没有区别!
3.在有符号数转换为无符号数的过程中,储存在机器内的数字并没有改变,对于定义为有符号类型的数,机器需要将第一个数视为符号;而对于定义为无符号类型的数,机器将其整体视为一个数

在遇到关于数据的相关问题时,如果难以想通,可以从机器层面进行思考,利于理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值