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

新变量字符解析:如何提取char类型变量单引号内的目标数值

错误原因分析

  • 你定义的j是char类型的单个字符变量,不是数组或字符串类型,C语言中只有数组、指针类型支持[]下标访问语法,所以i=j[1]本身属于语法错误,无法运行。
  • 字符'2'在内存中实际存储的是对应的ASCII编码值0x32(十进制为50),不是直接存储数值2,所以也不能直接把j赋值给i得到数值2。

正确实现方式

利用ASCII编码中数字字符连续排列的特性,用字符变量减去'0'的编码值,即可得到对应的整数值:

char j = '2'; // 存储的ASCII值为0x32(十进制50)
int i;
// 正确写法
i = j - '0';

此时i的值就等于你需要的数值2。

补充说明

这个写法是通用可移植的,所有符合标准的字符编码体系(包括ASCII、GBK、UTF-8等)都满足数字字符'0'到'9'连续排列的规则,比直接写j - 0x30的硬编码写法兼容性更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:18:04