很多人可能都认为“&”运算符比“+”运算符优先级高,其实不然,如下所示:
byte one = 0x04;
one = one & 0x70 + 1;
one的值为0,而不是1。这是因为“+”的优先级比“&”高,所以0x70先加1,变成0x71,然后one再与0x71进行与操作,结果为0。
这是很容易引起错误的地方,因为很多程序员想要达到的目的是one与0x70与运算后再加1,所以这个时候要用括号达到这个目的:
byte one = 0x04;
one = (one & 0x70) + 1;
这样one运算后的结果就为1了。