打印

[51单片机] 8位值可以给16位变量赋值么?

[复制链接]
678|13
跳转到指定楼层
楼主
u8  K=0x01;
u16 T=0xff00;
T=K;
这样的赋值合法么?如果合法的话,T=0xff01是么?或者等于什么?
沙发
| 2019-8-31 09:00 | 只看该作者
大姐,你随便找个编译器仿真一下不就可以知道了吗???
板凳
| 2019-8-31 09:35 | 只看该作者
T=0x0001
地板
| 2019-8-31 11:23 | 只看该作者

5
| 2019-8-31 11:29 | 只看该作者
8位和16位可以互相赋值,这个没有问题。
如果是8位数赋值16位,则16位的也只等于8位的数。
如果是16位数赋值8位数,则8位数值等于16位数值的低8位,也就是高位直接舍去。

评论

R2D2 2019-8-31 13:20 回复TA
菜鸟你不知道8位赋值给16位有符号位扩展的问题吧? 
6
| 2019-9-1 12:11 | 只看该作者
7
| 2019-9-1 13:12 | 只看该作者

朴昌范真是个大神,软硬通吃。
8
| 2019-9-1 18:56 | 只看该作者
编译器会自动扩展适应数据类型.  如果 16 位赋值给 8 位, 会复杂些
9
| 2019-9-2 13:40 | 只看该作者
还要看具体用的哪种单片机和编译器,有些编译器蛮反人类的。
10
| 2019-9-2 13:49 | 只看该作者
ly1972001 发表于 2019-9-2 13:40
还要看具体用的哪种单片机和编译器,有些编译器蛮反人类的。

没见过哪个C编译器反人类的。

评论

ly1972001 2019-9-10 15:05 回复TA
如果不反,就没SI什么事了 
11
| 2019-9-2 15:46 | 只看该作者
这个要从汇编角度来看,汇编没有U16 U8这一说,数据搬移基本就是 寄存器到寄存器、  寄存器到存储单元  、存储单元到寄存器 、 存储单元到存储单元。
12
| 2019-9-2 20:41 | 只看该作者
R2D2 发表于 2019-8-31 09:00
大姐,你随便找个编译器仿真一下不就可以知道了吗???

大姐
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /6 下一条

在线客服 快速回复 返回顶部 返回列表
优优彩票网 广西快3开奖 幸运飞艇官网 欢乐生肖 幸运飞艇官网 天津11选5 澳洲幸运10开奖结果 秒速时时彩 快乐赛车官网 吉林快3