返回值和算数溢出怎么办啊

int ExpressionTree::Comp(char c1, char c2)
{
switch (c1)
{
case '+':
case '-':
if (c2 == '' || c2 == '/' || c2 == '(')
return -1;
else
return 1;
break;
case '
':
case '/':
if (c2 == '(')
return -1;
else
return 1;
break;
case '(':
if (c2 == ')')
return 0;
else
return -1;
break;
case ')':
return 1;
break;
case '#':
if (c2 == '#')
return 0;
else
return -1;
break;
}
}“ExpressionTree::Comp”: 不是所有的控件路径都返回值
double ExpressionTree::Compute()
{
return ComputeHelp(root);
}
double ExpressionTree::ComputeHelp(BTNode* r)
{
double lvalue, rvalue, value{};
if (r->lchild == NULL && r->rchild == NULL)
return r->data - '0';算术溢出: 使用 4 字节值上的运算符 - ,然后将结果转换到 8 字节值。在调用运算符 - 之前将值强制转换为宽类型可避免溢出(io.2)。
else
{
lvalue = ComputeHelp(r->lchild);
rvalue = ComputeHelp(r->rchild);
switch (r->data)
{
case'+':
value = lvalue + rvalue;
break;
case '-':
value = lvalue - rvalue;
break;
case'*':
value = lvalue * rvalue;
break;
case'/':
value = lvalue / rvalue;
break;
}
return value;
}
}
这两个问题怎么办啊
“ExpressionTree::Comp”: 不是所有的控件路径都返回值
算术溢出: 使用 4 字节值上的运算符 - ,然后将结果转换到 8 字节值。在调用运算符 - 之前将值强制转换为宽类型可避免溢出(io.2)。

第一个问题,在函数最后加上return