快要找工作了,最近在狂看《程序员面试宝典》(第二版),中间有个题目,作者解释错了。更重要的是,里面有个细节,导致我弄了好久才搞懂,现在拿出来分享下。下面是书中P37的源代码:
面试例题1: 下面程序的输出结果是多少?
#include<iostream>
using namespace std;
int main()
{
unsigned char a = 0xA5;
unsigned char b = ~a >> 4;
//cout << b;
printf("b=%d\n",a);
return 0;
}
书中估计是印错了,printf语句中应该是b。因为如果是a的话,直接输出165了,根本不用算的。修改后的源代码为:
#include<iostream>
using namespace std;
int main()
{
unsigned char a = 0xA5;
unsigned char b = ~a >> 4;
//cout << b;
printf("b=%d\n",b);
return 0;
}
如果按照输出b处理,按照书中给出的注解,最终输出就结果是245。但是解释出了问题,首先关于运算符优先级,取反运算符&#