找回密码
 立即注册
查看: 413|回复: 2

((u8)modbus_reg[1]=0x04) << 8;报错无效??? | 已解决

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2023-10-10 08:52:56 | 显示全部楼层 |阅读模式
((u8)modbus_reg[1]=0x04) << 8;报错无效???我想把modbus_reg[1]低8位赋值完毕后,再移植高8位, 具体见附件,

尝试了以下几种都不行:
(modbus_reg[1]=0x04) << 8;
((u16)modbus_reg[1]=0x04) << 8;

(u16)((u8)modbus_reg[1]=0x04) << 8;


报错.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-10-10 09:16:46 | 显示全部楼层
((u8)modbus_reg[1]=0x04) << 8;
你这条指令拆解成2条指令:
1. modbus_reg[1]=0x04;
2. modbus_reg[1]<<8;
第1条是有效指令,第2条是无效指令,因为左移之后的内容没有存放到变量里面。
根据你的描述可以修改成以下指令:
modbus_reg[1]=(u16)0x04 << 8;
或者
modbus_reg[1]=0x0400;
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2023-10-10 14:42:03 | 显示全部楼层
乘风*** 发表于 2023-10-10 09:16
((u8)modbus_reg[1]=0x04)

感谢支持,是的你给出的这两语句都编译没问题,我回来测试一下,是我把自己绕进去了,再次感谢!
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 03:28 , Processed in 0.109283 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表