【发布时间】:2018-10-15 12:52:03
【问题描述】:
我对 C++ 很陌生,大约 30 分钟前才开始使用在线课程学习。我有点困惑为什么这个字符串比较在基本的数学脚本中不起作用:
#include <iostream>
#include <string>
using namespace std;
int main() {
int one, two, answer;
char *oper;
cout << "Add two numbers\n\nEnter your first number" << endl;
cin >> one;
cout << "Choose an operator: + - * / %%" << endl;
cin >> oper;
cout << "Enter your second number" << endl;
cin >> two;
if (oper == "+") {
answer = one + two;
}
else if (oper == "-") {
answer = one - two;
}
else if (oper == "*") {
answer = one * two;
}
else if (oper == "/") {
answer = one / two;
}
else if (oper == "%%") {
answer = one % two;
}
cout << one << " " << oper << " " << two << " = " << answer << endl;
return 0;
}
one、oper、two 的值分别为1、"+" 和1,但最终打印出1 + 1 = 4201435。没有if/else if 语句正在执行。这是什么原因造成的?
【问题讨论】:
-
oper == "+"比较指针而不是字符串,因为oper是char*。 -
使用
cin >> oper假定oper指向适当的缓冲区。你的是未初始化的。事实上,鉴于这是用户输入,没有办法知道缓冲区是否合适。永远不要这样做。如果您使用std::string,这不是问题。
标签: c++ compare string-comparison comparison-operators