c++ - 为什么我不能将 char 与 "*"进行比较?

标签 c++

为什么我不能将 UserInput[i]"*" 进行比较?编译器说“ISO c++ 禁止比较指针和整数”。整数在哪里?我在那一行看到的唯一一个是 i,它用于定位特定字符。

#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

int main(){
    char UserInput[4] = "2*3";
    for (int i=0; i< strlen(UserInput); i++)
    {
        if(UserInput[i] == "*")
        {
            cout<<"There is multiplication Involved \n";
        }
    }
    return 0;
}

最佳答案

Where is the integer?

您的条件表达式是 UserInput[i] == "*"

在表达式中 UserInput[i]char 类型。在许多二进制操作中,char 在操作执行之前被提升为 int。就编译器而言,它正在将 int"*" 进行比较,后者的类型为 const char[2] 但衰减指向表达式中的指针。

您需要做的是将char 与字符常量'*' 进行比较。使用

if(UserInput[i] == '*') {

关于c++ - 为什么我不能将 char 与 "*"进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45853169/

相关文章:

c++ - 通过模板为项目范围内的唯一 ID 自动增加类型

c++ - Apache 点燃 C++ 中 sqlfieldQuery 的连续查询

c++ - MPI_Scatter 和 MPI_Bcast 之间的区别

c++ - 在OpenCV中将uchar Mat转换为float Mat?

c++ - 为什么不同字符串的 std::Hash 相等?

c++ - 无法访问 header

c++ - 从派生类访问基类函数

c++ - std::map 分配节点打包?

c++ - 可变参数模板 : how can I check if a specific class is part of the pack, 并在该类存在时执行该类的特定方法

c++ - 专注于仿函数返回类型