pojowsh技术开发之家

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

直接上代码:

代码1:
#include<stdio.h>

int main()
{
unsigned short i=0;
i--;
printf("%u",i);
return 0;
}

代码2:
#include<stdio.h>

int main()
{
unsigned short i=0;
i--;
printf("%d",i);
return 0;
}

代码3:
#include<stdio.h>

int main()
{
unsigned int i=0;
i--;
printf("%u",i);
return 0;
}
代码4:
#include<stdio.h>

int main()
{
unsigned int i=0;
i--;
printf("%d",i);
return 0;
}

以上代码在32位xp系统vc6的开发环境下输出如下:

65535

65535

4294967295

-1

输出结果很有意思,头两个i定义的时候为short,后两个i定义的时候为int,这里当类型为unsigned 时,-1会溢出,从而出现类似65535/4294967295的结果,但是当i为short和int时,以%d输出的结果告诉我们short始终溢出,而int没有,请问这是为什么呢?

posted on 2011-10-18 20:50  pojowsh  阅读(1436)  评论(1编辑  收藏  举报