找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2814|回复: 4

[通用编程] 位移问题

[复制链接]
发表于 2007-9-11 16:55:38 | 显示全部楼层 |阅读模式
#include<stdio.h>
void main()
{
    unsigned  a,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[s:3][s:3][s:3][s:3][s:3]
发表于 2007-9-11 18:17:46 | 显示全部楼层
unsigned  a,b,c;
LZ這兒說明了a,b,c是啥data type沒有。。。沒說明的話,compiler會用不同的方法次理
遝有,n是多少。。。。
发表于 2007-9-11 19:05:26 | 显示全部楼层
有的编译器把单独的unsigned认作 unsigned int,有的不是。
发表于 2007-9-11 20:52:48 | 显示全部楼层
TC是16位的,所以unsigned int最大是0xFFFF,VC是32位的,unsigned int最大是0xFFFFFFFF
发表于 2007-9-11 21:27:56 | 显示全部楼层
john正解吧。。。
所以某多數會寫明是short還是long
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 18:28 , Processed in 0.011666 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表