Ошибка error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

#include <iostream>
using namespace std;
int main(){
    cout<<"Это мой калькулятор, он слегка неоче"<<endl;
    cout<<"Обозначения для математичесских операций:"<<"\n"<<"+ это сложение"<<"\n"<<"- это вычитание"<<"\n"<<"* это умножение"<<"\n"<<"и наконец / это деление";
    int num1,num2;
    char symbol;
    cout<<"Введите первое число:";cin>>num1;
    cout<<"\n"<<"Введите второе число:";cin>>num2;
    cout<<"\n"<<"Введите знак математичесской операции:";cin>>symbol;
    if (symbol=="+"){
        cout<<num1+num2;
    }
    else if (symbol=="-"){
        cout<<num1-num2;}
    else if (symbol=="*"){
        cout<<num1*num2;
    }
    else if (symbol=="/"){
        cout<<num1/num2;    
    }
    else{cout<<"Что то пошло не так ";}
    
    
}

Собственно, начал изучать c++, решил забацать простенький калькулятор. Пожалуйста, подскажите в чем ошибка и как ее исправить.


Ответы (1 шт):

Автор решения: Harry

Понимаете,

char symbol;

это - один символ, т.е. небольшое число (знаковое или беззнаковое, зависит от конкретного компилятора и настроек).

А "+" - это строка, т.е. указатель на массив символов, по сути - адрес этого самого + в памяти.

Ваше сравнение

symbol=="+"

сравнивает целое число с указателем, о чем вас и предупреждает компилятор.

Если вы хотите (а я думаю, что именно этого вы и хотите) сравнивать значение символа в переменной с символом + - используйте одинарные кавычки:

symbol=='+'
→ Ссылка