最近在学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就可以了,后面都一样
程序看着真复杂,给你几个优化的提示: