如何在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
相关产品推荐
相关产品推荐

