两个整数相乘时完全不相关的结果?

#include <iostream>
using std::cout;
using std::endl;
        
int main(void) {
    std::string fx = "6x^2+6x+4";
        
    int part1 = fx[0] * fx[3];
                cout << fx[0] << endl;
                cout << fx[3] << endl;
                cout << part1;
}

所以我有这个字符串,fx[0]并且fx[3]显然是整数:当我将它们打印到控制台时,它们打印得很好;然而,part1(它们的乘法)等于一些完全不相关的数字?任何人都可以帮忙吗?

这是输出:

6
2
2700

回答

您的fx[0]fx[3]变量是类型char(在 C++ 中整数类型)。但是,字符串的这两个元素中的实际值fx将是数字6和的表示,而2不是这些数字的数值。

通常,这些表示将是ASCII 代码(但这不是必需的);然而,什么需要的是,数字的表示09有连续的,连续的值。因此,通过减去数字的值0,我们可以转换为它们的数字表示。

在您的情况下,以下行将进行转换:

    int part1 = (fx[0]-'0') * (fx[3]-'0');

为什么你在打印时看到正确的价值观的原因fx[0]fx[3]是因为版本cout <<,需要一个操作char参数设计打印的字符表示的(而不是它的“ASCII”码); 但是,类型的cout <<运算符int(如您的part1)将打印内部表示的实际值。(尝试更改您的其中一行cout << (int)fx[0] << endl;以查看差异。)


PS不要忘了#include <string>标题-一些实现做含蓄内侧<iostream>头,但不依赖于!


以上是两个整数相乘时完全不相关的结果?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>