error: control reaches end of non-void function [-Werror=return-type] } ^
error: control reaches end of non-void function [-Werror=return-type] } ^
问题基本上是关于从给定的 'n' 数字生成一个算术表达式,并且该表达式应该可以被 101 整除。我们只能有 +、-、* 运算符并且表达式是左关联的。
我已经尝试了关于堆栈溢出的所有可用解决方案,例如用 else 关闭表达式等等
bool calci(int a[],int n,int sum,int pos,char operato[],deque<int>&q,deque<char>&qc)
{
if(sum%101==0)
{ //cout<<"sum:"<<sum<<endl;
return true;
}
else if(pos==n)
{return false;}
else
{
for(int k=0;k<3;k++)
{ // cout<<"here for "<<a[pos]<<endl;
sum=addto(sum,a[pos],operato[k]);
qc.push_back(operato[k]);
q.push_back(a[pos]);
bool kyaagesemila=calci(a,n,sum,pos+1,operato,q,qc);
if(kyaagesemila)
{
return true;
}
sum=removefrom(sum,a[pos],operato[k]);
qc.pop_back();
q.pop_back();
}
}
}
我遇到编译错误
solution.cc:53:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
cc1plus: some warnings being treated as errors```
错误信息已经很清楚了。该函数具有 return 类型 bool
但 return 在某些执行路径中没有任何内容。
在最后一个 else 语句中哪里有带有布尔表达式的 return 语句?
或者您需要重写最后一个 else 语句,使其 return 成为循环外的布尔表达式。
例如在循环之后你可以添加语句
return false;
P.S。使用英文单词作为变量标识符。
这正是它所说的:您的代码并不总是 return(或者,如果是,那是由于编译器没有能力或不希望解决的逻辑)。
如果控制在 else
中进入循环,并且没有迭代 kyaagesemila == true
,它永远不会到达 return
语句。
根据您想要的逻辑,在 else
的末尾放置一个 return false;
或 return true;
。
问题基本上是关于从给定的 'n' 数字生成一个算术表达式,并且该表达式应该可以被 101 整除。我们只能有 +、-、* 运算符并且表达式是左关联的。
我已经尝试了关于堆栈溢出的所有可用解决方案,例如用 else 关闭表达式等等
bool calci(int a[],int n,int sum,int pos,char operato[],deque<int>&q,deque<char>&qc)
{
if(sum%101==0)
{ //cout<<"sum:"<<sum<<endl;
return true;
}
else if(pos==n)
{return false;}
else
{
for(int k=0;k<3;k++)
{ // cout<<"here for "<<a[pos]<<endl;
sum=addto(sum,a[pos],operato[k]);
qc.push_back(operato[k]);
q.push_back(a[pos]);
bool kyaagesemila=calci(a,n,sum,pos+1,operato,q,qc);
if(kyaagesemila)
{
return true;
}
sum=removefrom(sum,a[pos],operato[k]);
qc.pop_back();
q.pop_back();
}
}
}
我遇到编译错误
solution.cc:53:1: error: control reaches end of non-void function [-Werror=return-type]
}
^
cc1plus: some warnings being treated as errors```
错误信息已经很清楚了。该函数具有 return 类型 bool
但 return 在某些执行路径中没有任何内容。
在最后一个 else 语句中哪里有带有布尔表达式的 return 语句?
或者您需要重写最后一个 else 语句,使其 return 成为循环外的布尔表达式。
例如在循环之后你可以添加语句
return false;
P.S。使用英文单词作为变量标识符。
这正是它所说的:您的代码并不总是 return(或者,如果是,那是由于编译器没有能力或不希望解决的逻辑)。
如果控制在 else
中进入循环,并且没有迭代 kyaagesemila == true
,它永远不会到达 return
语句。
根据您想要的逻辑,在 else
的末尾放置一个 return false;
或 return true;
。