位移问题
#include<stdio.h>void main()
{
unsigneda,b,c;
int n;
scanf("%x,%D",&a,&n);
b=a<<(16-n);
c=a>>n;
c=c|b;
printf("a=%x\nc=%x",a,c);
}
为什么在TC中输出答案是
a=f2d3
c=7e5a
在VC++中输出的是
a=f2d3
c=1e5a7e5a unsigneda,b,c;
LZ這兒說明了a,b,c是啥data type沒有。。。沒說明的話,compiler會用不同的方法次理
遝有,n是多少。。。。 有的编译器把单独的unsigned认作 unsigned int,有的不是。 TC是16位的,所以unsigned int最大是0xFFFF,VC是32位的,unsigned int最大是0xFFFFFFFF john正解吧。。。
所以某多數會寫明是short還是long
页:
[1]