首页 > 解决方案 > 将两个整数相乘时完全不相关的结果?

问题描述

#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

标签: c++

解决方案


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

很多时候,这些表示将是ASCII 代码(但这不是必需的);但是,需要的0数字的表示9具有连续的连续值。因此,通过减去数字的值0,我们可以转换为它们的数字表示。

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

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

fx[0]您在打印时看到正确值的原因fx[3]是因为接受参数的cout <<运算符版本旨在打印表示的字符(而不是其“ASCII”代码);但是,类型的运算符(例如您的)将打印内部表示的实际值。(尝试更改其中一条线以查看差异。)charcout <<intpart1cout << (int)fx[0] << endl;


PS不要忘记#include <string>标题 - 一些实现在标题中隐含地<iostream>这样做,但不要依赖它!


推荐阅读