找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1961|回复: 5
打印 上一主题 下一主题
收起左侧

单片机C语言keile5<<=为什么会报错?

[复制链接]
跳转到指定楼层
楼主
keile5<<=为什么会报错?
打算把51的程序移植到32
在keil4中能用data1=data1<<=1;
但是在keil5给32位写程序时会出现错误


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:824490 发表于 2023-1-29 22:32 | 只看该作者
话多 必失!
data1<<=1; // 有这个就可以了
data1=data1;//这个就不用了
回复

使用道具 举报

板凳
ID:1034262 发表于 2023-1-29 23:14 | 只看该作者
语法错误吧。
要么是:data1 <<= 1;
呀么是:data1 = data1 << 1;
回复

使用道具 举报

地板
ID:883242 发表于 2023-1-30 07:22 | 只看该作者
a<<=b等效于a=a<<b
data1=data1<<=1; 展开后就是:
data1=data1=data1<<1;
这不是典型的语法错误还是什么?
回复

使用道具 举报

5#
ID:1063596 发表于 2023-2-20 14:24 | 只看该作者
复合运算符本身就包含给变量赋值的意思,类似 a+=3 -> a=a+3 ,是不需要再写一个等于号的。
同类的写法 a*=2,a+=3,a-=5,a/=6,a%=7,a|=8,a&=1。
基本运算符和位运算都可以给成复合运算符~
回复

使用道具 举报

6#
ID:1059013 发表于 2023-2-20 18:50 | 只看该作者
加个括号data1=(data1=data1<<1);试试
左结合的原因吧
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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