如何将char类型数组转换为整数以执行乘法运算?
解决char数组元素转整数进行乘法运算的问题
这确实是个容易卡壳的小细节,别担心,其实解法很简单!
问题根源
你遇到的问题是:char类型的数组里存储的是数字字符的ASCII值,比如字符'1'的ASCII码是49,'2'是50,以此类推。如果直接用code[2] * 100,实际上是用这个ASCII值去乘,结果自然不是你想要的数字运算结果。
解决方案
要把单个数字字符转换成对应的整数,只需要用该字符减去字符'0'的ASCII值就行——因为ASCII表中'0'到'9'是连续排列的,字符 - '0'会直接得到对应的0-9整数。
修改你的代码如下:
// 将字符转成对应整数后再计算 int duracaoinicial = (code[2] - '0') * 100; int duracaofinal = (code[4] - '0') * 100;
注意事项
- 确保
code数组里的目标元素确实是0-9的数字字符,如果是字母、符号或者其他非数字字符,这个转换会得到错误的数值(比如'A'-'0'会得到41)。 - 如果你的数组里是多位数字的字符串(比如"123"),那需要用
atoi()或者strtol()这类函数来转换,但你的场景是单个字符转整数,用减'0'的方法最直接高效。
内容的提问来源于stack exchange,提问作者Fernando Caria
相关产品推荐
相关产品推荐

