直接上代码:

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-22
猜你喜欢
  • 2021-10-23
  • 2022-03-02
  • 2022-01-22
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案