[英]Giving error for wrong return type in C++
#include<iostream>
using namespace std;
void factor(int n)
{
if(n<=1)
return;
for(int i=2;i*i<=n;i++){
while(n%i==0){
printf(i);
n=n/i;
}
}
if(n>1)
{
return n;
}
}
int main(){
factor(10);
}
錯誤:帶有值的返回語句,在 function 返回 'void' [-fpermissive] 16 | 返回 n; | ^
返回類型不應該是 void 而是 int。
問題是您的 function factor
的返回類型為void
,但它實際上返回一個int
object。
為了解決這個問題,您應該將 function factor
的返回類型與您實際從 function 內部返回的類型相匹配,如下所示。
其次,您還應該通過添加適當的返回語句來處理不滿足任何條件(如if
)的情況,如下所示:
int factor(int n) //VOID CHANGED TO INT HERE
{
if(n<=1)
return 0; //CHANGED RETURN TO RETURN 0 HERE
for(int i=2;i*i<=n;i++){
while(n%i==0){
//printf(i);
n=n/i;
}
}
if(n>1)
{
return n;
}
return 0;//ADDED RETURN HERE for the case if none of the if are satisfied and control flow reaches here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.