weixin_44577752 2019-10-21 22:59 采纳率: 100%
浏览 211
已采纳

关于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;
}
  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-22 09:03
    关注
    if (*d != '*' || *d != '-')throw *d;
    ->
    if (*d != '*' && *d != '-')throw *d;
    你的意思应该是如果不是+-*/,那么报错,因此是and
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程