第一次在c板块提问,一个关于位运算的问题,很奇怪,谁能帮忙解释一下,万分感谢!
ZQGet 2011-09-07 05:03:36 执行语句的意思是要读取一个int(4位)的数字
//arr是char的指针,off是int的偏移量
int i1=arr[off++] & 0xFF;
int i2=arr[off++] & 0xFF;
int i3=arr[off++] & 0xFF;
int i4=arr[off++] & 0xFF;
int i = (i1) +
(i2 << 8) +
(i3 << 16) +
(i4 << 24);
上面的语句就正确,但是下面这一句话 读取的结果就不对,不知道具体原因
int i = ((arr[off++] & 0xFF)) +
((arr[off++] & 0xFF) << 8) +
((arr[off++] & 0xFF) << 16) +
((arr[off++] & 0xFF) << 24);