m0_74968804 2022-11-06 12:47 采纳率: 0%
浏览 11

不明白这个为什么是-2?

unsigned a =4294967294;
printf ( "%d, %u\n", a, a);
输出结果为:

  • 2,4294967294
    为什么会是-2?

    img

  • 写回答

1条回答 默认 最新

  • 叶落花枯 2022-11-06 13:10
    关注

    4字节有符号取值范围 -2147483648 ~ +2147483647
    无符号情况下表示为 0 ~ 4294967295
    %d输出的是有符号的,那么 a 的值就溢出了,在这个闭环范围 -2147483648 ~ +2147483647 内取到的值就是 -2

    评论

报告相同问题?

问题事件

  • 创建了问题 11月6日

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小