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

C++中char变量赋值129输出-127的原理探究

为什么char类型变量赋值129后输出-127?

先看你的代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    char a = 129;
    printf("%d", a);
}

输出结果:-127

原因核心在于char类型的默认符号属性和8位整数的溢出规则:

  • 绝大多数编译器里,char默认是有符号8位整数(等价于signed char),取值范围是 -128 到 127。
  • 129超出了这个范围,赋值时会发生溢出截断——只保留低8位二进制。129的8位二进制是 10000001。
  • 对于有符号整数,最高位是符号位(1代表负数),剩余位存储补码。要得到实际数值,需将补码转原码:对10000001取反得到01111110,加1后是01111111(十进制127),加上符号就是-127。

如果编译器把char设为无符号类型(unsigned char),输出会是129,但这不是主流默认设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:20:19