asd79663 发表于 2019-11-23 20:45:23

关于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 21:47:15

本帖最后由 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>

asd79663 发表于 2019-11-24 10:56:10

终于知道为什么错了谢谢
页: [1]
查看完整版本: 关于vc++6.0 无符号整型定义变量的一个小问题。