c中的奇怪问题
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned short a ;
unsigned short b;
unsigned short c,d;
// scanf("%hd",&a);
// scanf("%hd",&b);
a= 45057;
b = 49158;
printf("%x\n",a);
printf("%x %x %x\n", a<<2,a>>14,(a<<2)|(a>>14 ));
printf("%x\n",b);
if(((a<<2)|(a>>14 )) == b)
printf("yes\n");
system("pause");
return 0;
}
这是用c编的一个小程序。上面代码红色的部分在((a<<2)|(a>>14)) == b 加上两边红色的括号后,就不能打印yes,去掉红色的括号就能打印yes,有谁能解释一下为什么吗