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

在C语言中如何将整数转字符?为何两种转换方式结果不同?

整数转字符'7'的两种写法差异原因

这俩写法的核心区别在于是否正确利用了ASCII编码的规则:

正确写法的逻辑

int a = 7;
char b = a + '0';
write(1,&b,1);

ASCII编码里,数字字符'0'到'9'是连续排列的:'0'的ASCII值是48,'1'是49,以此类推,'7'的ASCII值就是48+7=55。
这里把整数7加上'0'的ASCII值,刚好得到字符'7'对应的ASCII码,所以write输出的就是可打印的数字字符'7'。

错误写法的问题

int a = 7;
char b = (char) a;
write(1,&b,1);

这里直接把整数7强制转换成char,相当于让b存储的是ASCII值为7的字符。而ASCII值7对应的是控制字符(响铃符BEL),它不是可打印的数字字符,所以执行这段代码要么看不到任何输出,要么会触发终端的响铃提示,根本打不出'7'。

简单说:前者是把整数数字映射到对应的数字字符编码,后者是把整数直接当字符编码用,而7对应的编码根本不是数字'7'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:50:35