C++中如何比较用户输入的符号?解决指针与整数比较编译报错
解决C++中char与双引号字符串比较的编译错误
错误原因
编译错误的核心是类型不匹配:
- 变量
c是char类型,本质是单个字符的整数表示 - 双引号包裹的
"+"、"-"、"*"是C风格字符串,实际是const char*类型的指针
C++标准禁止整数(char属于整数类型)与指针直接比较,因此触发ISO C++ forbids comparison between pointer and integer错误。
修复方案
将比较时的双引号替换为单引号,单引号包裹的是单个字符常量,类型为char,和变量c的类型完全匹配:
#include <iostream> int main(){ int a, b; char c; std::cin >> a >> c >> b; if (c == '+' ){ std::cout << (a + b); } if (c == '-'){ std::cout << (a - b); } if (c == '*'){ std::cout << (a * b); } }
额外优化建议
可以把多个独立if改成else if结构,避免执行完匹配的条件后仍继续判断后续分支,同时增加非法输入的处理:
#include <iostream> int main(){ int a, b; char c; std::cin >> a >> c >> b; if (c == '+' ){ std::cout << (a + b); } else if (c == '-'){ std::cout << (a - b); } else if (c == '*'){ std::cout << (a * b); } else { std::cout << "不支持的运算符"; } }
内容的提问来源于stack exchange,提问作者Ronkly
相关产品推荐
相关产品推荐

