如下代码:
#include <stdio.h>
int main()
{
int a =8;
a<<2;
printf("%d\n",a);
}
为什么打印出来还是8呢?
因为a<<2只是一个表达式,没有对a进行赋值,如果a=a<<2;那么打印出来的结果就会变了
类似的
a *= 2;
a<<2 ->
a<<=2;
a<<2这个表达式,确实是将a的值左移2位,但是由于缺少赋值语句a=a<<2,所以a的值没有变化,还是8.
应该改为a<<=2,意义代表a=a*4 。而a=a<<1,代表a=a*2 。
因为a的值没变。就像正常的 a+1并不改变a的值一样。