直接上代码:
代码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没有,请问这是为什么呢?