august 发表于 2007-9-11 16:55:38

位移问题

#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

coolpay64 发表于 2007-9-11 18:17:46

unsigneda,b,c;
LZ這兒說明了a,b,c是啥data type沒有。。。沒說明的話,compiler會用不同的方法次理
遝有,n是多少。。。。

shawind 发表于 2007-9-11 19:05:26

有的编译器把单独的unsigned认作 unsigned int,有的不是。

john_he 发表于 2007-9-11 20:52:48

TC是16位的,所以unsigned int最大是0xFFFF,VC是32位的,unsigned int最大是0xFFFFFFFF

coolpay64 发表于 2007-9-11 21:27:56

john正解吧。。。
所以某多數會寫明是short還是long
页: [1]
查看完整版本: 位移问题