加个括号data1=(data1=data1<<1);试试 左结合的原因吧 |
复合运算符本身就包含给变量赋值的意思,类似 a+=3 -> a=a+3 ,是不需要再写一个等于号的。 同类的写法 a*=2,a+=3,a-=5,a/=6,a%=7,a|=8,a&=1。 基本运算符和位运算都可以给成复合运算符~ |
a<<=b等效于a=a<<b data1=data1<<=1; 展开后就是: data1=data1=data1<<1; 这不是典型的语法错误还是什么? |
语法错误吧。 要么是:data1 <<= 1; 呀么是:data1 = data1 << 1; |
话多 必失! data1<<=1; // 有这个就可以了 data1=data1;//这个就不用了 |