找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C语言 mask>>=1和mask>>1有区别吗?

[复制链接]
跳转到指定楼层
楼主
ID:346318 发表于 2021-7-5 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mask>>=1和mask>>1有区别吗?为什么我编译完都能正常运行结果一样

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

使用道具 举报

沙发
ID:947149 发表于 2021-7-5 22:02 | 只看该作者
mask>>=1等效于 mask=mask>>1,如果你mask>>=2的话就跟他不一样了
回复

使用道具 举报

板凳
ID:386001 发表于 2021-7-6 08:44 | 只看该作者
mask>>=1   向右移一位,并赋值到mask中
mask>>1     向右移一位,然后就没有然后了,并没有改变mask的值
回复

使用道具 举报

地板
ID:887202 发表于 2021-7-6 09:06 | 只看该作者
      首先mask>>=1,注意有一个等号,这是一个赋值操作等价于mask=mask>>1,所以mask的值改变了,例如mask为0101,那么执行mask>>=1之后,mask的值就变成了0010,整体右移一位,最低为丢失了,最高位补0;这样的话实际上mask的值改变了。
       >>是移位操作符,mask>>1就是一个移位操作,并不会改变mask本身的值,你可以认为mask>>1表示一个数,这个数的大小是mask>>1也就是0010,而mask本身还是0101。
回复

使用道具 举报

5#
ID:954312 发表于 2021-7-19 23:50 | 只看该作者
主要区别在于mask移位后有没有重新赋值到mask本身
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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