a<<8; //这是a的值左移8位, 而不是a左移了8位,a并没有变哦a<<8 返回的值是一个int可以这样做个测试:printf("%d",sizeof(a<<8); 16位编译器会输出232位编译器会输出4
如果a是字符型,左移8位倒是真的变成0了,但是一般情况下字符型参与运行自动用整数来进行,所以这个问题就不存在了,不过最好这样:(unsigned int)a << 8 | b