关于try...catch的问题

我fuc()函数出了错,但我不明白为什么

#include "pch.h"
#include <iostream>
using namespace std;
void a(double a,double b,double *add) {
    *add = a + b;
}
void ja(double a, double b, double *jian) {
    *jian = a - b;
}
void m(double a, double b, double *chen) {
    *chen = a * b;
}
void c(double a, double b, double *chu) {
    *chu = a / b;
}
double fuc(double a, char *d, double b)
{
    if (*d = '/'&&b == 0)
        throw b;

    else if (*d != '/' || *d != '+')
    {
        if (*d != '*' || *d != '-')throw *d;
        else return 0;
    }


}
int main()
{
    double *s1 = NULL;
    s1 = new double;
    char d;
    double x, y;
    cout << "请输入计算式:";
    cin >> x>>d>>y;
    try
    {
        fuc(x,&d,y);
        if (d == '+')
        {
            a(x, y, s1);
            cout << "加法:" << *s1;
        }
        else if (d == '-') {
            ja(x, y, s1);
            cout << "减法:" << *s1;
        }
        else if (d == '*') {
            m(x, y, s1);
            cout << "乘法:" << *s1;
        }
        else if (d == '/') {
            c(x, y, s1);
            cout << "除法:" << *s1;
        }

    }
    catch (double)
    {
        cout << "请输入正确的算式!!!";
        exit(1);
    }




    return 0;
}
if (*d != '*' || *d != '-')throw *d;
->
if (*d != '*' && *d != '-')throw *d;
你的意思应该是如果不是+-*/,那么报错,因此是and

if (*d = '/'&&b == 0)
少打了一个=号,应该是 if (*d == '/'&&b == 0)