以下代码执行后,val的值是_:
unsigned long val = 0;
char a = 0x48;
char b = 0x52;
val = b << 8 | a;
正确答案: B
A.20992
B.21064
C.72
D.0
答案解析:
这里面涉及到了默认类型转换:当出现在表达式里时,有符号和无符号的char和short都会被自动转换为int类型,在需要的情况下,将自动转换为unsigned int类型,在K&C中(不是当前的C)中,float会被自动转换为double类型。
b << 8 = 0x5200
val = 0x5200 | 0x48 = 0x5248 = 21064
所以选b