You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C/C++中正确表示-9223372036854775808?

正确表示int64_t最小负值的方法

针对你遇到的-9223372036854775808(int64_t类型最小负值)的表示问题,以下是几种可靠的解决方式:

  • 使用标准库宏(推荐)
    直接引用<stdint.h>中定义的INT64_MIN宏,这是C标准提供的规范写法,完全避免手动写数值带来的解析问题,跨平台兼容性也最好。

  • 无符号常量强制转换
    先定义无符号的64位常量9223372036854775808ULL(ULL表示unsigned long long,能容纳该正数),再强制转换为int64_t类型:

    (int64_t)9223372036854775808ULL
    

    根据C标准,这种转换会将无符号值对2^64取模,结果正好对应int64_t的最小负值。

  • 利用补码特性构造
    通过对0的long long版本取反再加1,构造出最小负值:

    (int64_t)(~0LL + 1)
    

    这种写法依赖补码的实现逻辑,可读性不如前两种,仅作为备选方案。

内容的提问来源于stack exchange,提问作者chacham15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:27:37