学习C++过程中遇到的问题

问题遇到的现象和发生背景

最近在学C++,题目做个运算器,在输入(4+5)时输出其和,在输入(4,5)时也输出其和。我用到了强制类型转换char--int,转换结果不合适

问题相关代码,请勿粘贴截图
#include
#include
using namespace std;
int main()
{
    char a[3];
    int i=0,d,b,c;
    while (cin >> a[i]&&(getchar()!='\n'))
    {
        i++;
        
    }
    d= (int(a[0])-48);
    b = (int (a[1]));
    c= (int(a[2])-48);
        if (b == 43)
            cout << d;
        if (int(a[1]) == 45)
            cout << (int(a[0]) - 48) - (int(a[2]) - 48);
        if (int(a[1]) == 42)
            cout << (int(a[0]) - 48) * (int(a[2]) - 48);
        if (int(a[1]) == 47)
            cout << (int(a[0]) - 48) / (int(a[2]) - 48);
        else cout << (int(a[0]) - 48) + (int(a[1]) - 48);
    
    
}

运行结果及报错内容

输入1+1,结果是1-4

我的解答思路和尝试过的方法

粘贴的代码加法部分是我验证部分,

我想要达到的结果

1

char转int不需要强制转换

getchar()!='\n' 这里getchar会读取掉一个字符啊,如果不是换行符,那就会跳过一个字符的。
改为
while (cin >> a[i]&&(a[i]!='\n'))

你既然将字符与48、47之类的比较,就不需要进行char转换,直接a[0]-48就可以了,后面都一样

程序看着真复杂,给你几个优化的提示:

  1. while 循环改一下,while(cin >> a[i] && a[i] != '#')
  2. char 和 int 属于一个等级,不要取强制转换
  3. 直接这样判断运算符:if (a[1] == '-') else if(a[1] == '+')
  4. char 类型的运算,都是 ASCII ,直接 减去 48 运算,例如加法,不要转换,直接 int sum = a[0] - 48 + a[1] - 48;