分析下面的代码,求运算结果。
#include <stdio.h>
int main(void)
{
int a = 6, b = 4;
printf("%d\n", a ^ b << 2);
return 0;
}
分析:
主要是考的是“优先级”和按位“异或”,
左移运算符优先级高于按位异或运算符,所以b先左移两位 = 16,
异或运算符是按位操作,对应位相同的得0,不同的得1,因此看二进制形式,6 -- 00000110 16 -- 00010000,
结果就是: 00010110 = 22