>>与~优先级的问题【已解决】
#include<iostream>using namespace std;
int main()
{
unsigned char a=0xA5;
unsigned char b=~a>>4;
printf("b=%d\n",b);
system("pause");
return 0;
}
这段代码在vs2010里跑出来的结果是245(11110101)。a为10100101,根据这个结果判断是先做了>>,然后做了~,但是~的优先级不是比>>高吗,怎么会先做移位呢
感谢5、6楼的解答
1、位运算时会转成int,所以变成了,00000000,00000000,00000000,10100101;
2、做位运算变成11111111,11111111,11111111,01011010;
3、移位运算,由于是负数,左边填充1,所以变成11111111,11111111,11111111,11110101;
4、如果输出结果是unsigned char,就发生了截断,得到245。如果是int类型,就是-11。-11的补码刚刚好就是上面的那个。
[ 本帖最后由 咖啡色裂变 于 2014-6-4 15:00 编辑 ]