1、整数提升(char 转 int) 和 优先级问题(易错题)
#include <iostream>
using namespace std;
int main()
{
unsigned char a = 0xA5;
unsigned char b = ~a >> 4 + 1;
printf("b = %d\n", b); //b=250
return 0;
}
在机器中 0xA5的寄存中表达是 0000 0000 1010 0101(易错点) ,取反是1111 1111 0101 1010,那么右移5位是 0000 0111 1111 1010,由于是 unsigned char 型的只能表示低8位的数值,即250。