c语言 a<<=1与a<<1有什么区别?

 我来答
惠企百科
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

1.运算步骤长度不同

<<是左移运算符,=是赋值运算符,前者的优先级要大于后者。因此在a<<=1在这个表达式当中共进行了两步:

第一步是a<<,a(即二进制的值)向左移。

左移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。因此a不发生位移。

第二步是=1,将1赋予给a,也就是a=1。

而a<<1只发生了左移,也就是只进行了一步。

2.最后a的值不同

上面提到a<<=1的第二步是将1赋予给a,也就是a=1。因此最后a的值是1。

而a<<1将a(即二进制的值)向左移动了一位,高位补0,低位遗弃,但是a的值不变,因此两个a的值不同。

3.运算结果不同

最后a<<=1整个表达式的值为1,而a<<1表达式的值等于变量a(即二进制的值)向左移动了一位之后的值。

扩展资料:

<<、=运算符在C语言中的功能

1.<<的功能

把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。如a<<b,则将数据a格比特位向左移b位,即左移a位就是将数据扩大至原来的2的a次方倍。

2.=的功能

对对象进行赋值,如a=b,则a的值为b。在c语言中也常常将赋值运算符=与其他的运算符结合起来,表示按照优先级顺序处理对象后,再对对象进行赋值。

参考资料:百度百科-左移运算符

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式