本帖最后由 hwk612167 于 2011-10-10 15:15 编辑
#include<stdio.h>
int main(void)
{
signed char c = 0xa1;
short x = 0xa1a1;
printf("%x===%d\n%x===%d\n%x===%d\n",c, c, (c<<1), (c<<1), (c>>1), (c>>1));
printf("%x===%d\n%x===%d\n%x===%d\n",x, x, (x<<1), (x<<1), (x>>1), (x>>1));
getch();
return 0;
}
以上程序在win-tc运行结果为:
ffa1===-95
ff42===-190 (问题1:按我理解结果应为0x42===66??哪里出问题了)
ffd0===-48 (问题2:以上3个结果怎么多了ff???)
a1a1===-24159
4342===17218(问题3:为何又变正数了?)
d0d0===-12080
----------------分割线------------------
教材上说算术左移和逻辑左移相同,不太明白,写了个程序测试下,更糊涂了,求各位指点下,谢谢! |