关于vc++6.0 无符号整型定义变量的一个小问题。
#include<stdio.h>#include<math.h>
int main()
{
unsigned int i;
i=pow(2,32)-1;
printf("%d\n",i);
return 0;
}
无符号整型范围不是0~2^32-1吗?为什么vc++6.0输出的是-1??
求大神讲解{:10_254:} 本帖最后由 jackz007 于 2019-11-23 22:01 编辑
printf("%d\n",i);
%d 是用来显示 signed int 的,%u 才是用来显示 unsigned int 的。
printf("%u\n",i);
内存中的同一个数 FF FF FF FF,就看你需要如何解释它了,如果按 signed int 解释,它的值是 -1, 如果按 unsigned int 解释,它就是这种类型数值的上限 4294967295 。
#include <stdio.h>
main(void)
{
int d = 0xffffffff ;
printf("0x%8x , %d , %u\n" , d , d , d) ;
}
C:\Bin>g++ -o x x.c
C:\Bin>x
0xffffffff , -1 , 4294967295
C:\Bin> 终于知道为什么错了谢谢
页:
[1]