#include <stdio.h>
int main(void) {
short a = 127;
short b = -127;
int c ;
printf("%d\r\n",sizeof(a));
printf("%d\r\n",sizeof(b));
printf("%x\r\n",a);
printf("%x\r\n",b);
printf("%x\r\n",a<<16&0xff);
printf("%x\r\n",b<<16&0xff);
printf("%d\r\n",sizeof(a<<16));
printf("%d\r\n",sizeof(b<<16));
c=(a<<16)|(b&0x0000ffff);
printf("%d\r\n",sizeof(c));
printf("%d\r\n",c);
}
结果:
2
2
7f
ffffff81 <~~这个比较有意思,16位的short打印出了32位
0
0
4
4
4
8388481