C语言中的位移运算

请问各位大侠temp<<=1和temp<<1有什么区别?谢谢!
2024-11-29 10:18:02
推荐回答(3个)
回答1:

没什么区别temp<<=1意思就是temp = temp<<1,也就是temp自己放大2倍

也就是把temp<<1计算结果的返回值,保存在temp中

但是如果单纯的temp<<1操作,他的返回值是temp的2倍,但是temp本身的值没有变

所以俩个的区别就是,单步执行完操作,temp<<=1执行完,temp扩大2倍

temp<<1执行完,temp的值不变

回答2:

前一个是吧temp中的值的二进制位向左移动一位,移动那位用0补,并把操作后的值赋予temp自身,第二个就是只操作不赋值!+=,—=,和这类符号一样!

回答3:

temp<<=1等价于temp = temp<<1;//移位后赋值
temp<<1只是移位对temp本身没有任何影响