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

[复制链接]
3049|13
 楼主| rongyongkang 发表于 2019-8-31 00:47 | 显示全部楼层 |阅读模式
u8  K=0x01;
u16 T=0xff00;
T=K;
这样的赋值合法么?如果合法的话,T=0xff01是么?或者等于什么?
R2D2 发表于 2019-8-31 09:00 | 显示全部楼层
大姐,你随便找个编译器仿真一下不就可以知道了吗???
Prry 发表于 2019-8-31 09:35 | 显示全部楼层
T=0x0001
R2D2 发表于 2019-8-31 11:23 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
tianxj01 发表于 2019-8-31 11:29 | 显示全部楼层
8位和16位可以互相赋值,这个没有问题。
如果是8位数赋值16位,则16位的也只等于8位的数。
如果是16位数赋值8位数,则8位数值等于16位数值的低8位,也就是高位直接舍去。

评论

菜鸟你不知道8位赋值给16位有符号位扩展的问题吧?  发表于 2019-8-31 13:20
R2D2 发表于 2019-9-1 12:11 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Cjy_JDxy 发表于 2019-9-1 13:12 | 显示全部楼层

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

没见过哪个C编译器反人类的。
七颗咖啡豆 发表于 2019-9-2 15:46 | 显示全部楼层
这个要从汇编角度来看,汇编没有U16 U8这一说,数据搬移基本就是 寄存器到寄存器、  寄存器到存储单元  、存储单元到寄存器 、 存储单元到存储单元。
eddy2019 发表于 2019-9-2 20:41 | 显示全部楼层
R2D2 发表于 2019-8-31 09:00
大姐,你随便找个编译器仿真一下不就可以知道了吗???

大姐
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部