新变量字符解析:如何提取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
相关产品推荐
相关产品推荐

