[Error] return-statement with no value, in function returning 'int' [-fpermissive]
时间: 2024-02-12 17:07:17 浏览: 148
这个错误提示意味着你在一个返回 int 类型值的函数中使用了没有返回值的 return 语句。在 C/C++ 中,如果一个函数声明返回值为 int,那么在函数体中必须使用 return 语句返回一个 int 类型的值,否则编译器会报错。
请检查你的代码,确认在所有返回 int 类型值的函数中都使用了正确的 return 语句,并且返回值的类型和函数声明中的返回类型相匹配。如果你的函数确实不需要返回值,可以在函数声明中使用 void 来声明返回类型,例如:
```
void myFunction() {
// 函数体
}
```
如果你需要返回一个特殊值来表示函数执行成功或失败,可以使用枚举类型或者宏定义来定义返回值的常量,例如:
```
enum {
SUCCESS = 0,
ERROR = -1
};
int myFunction() {
if (/* 执行成功 */) {
return SUCCESS;
} else {
return ERROR;
}
}
```
相关问题
C:\Program Files\CodeBlocks\sushuji\main.cpp|6|error: return-statement with no value, in function returning 'int' [-fpermissive]|
在你提供的代码中,问题出现在递归函数的返回类型不匹配。在C++中,你的递归函数getResult返回的是long long类型,而在翻译后的代码中,递归函数getResult返回的是int类型。这导致了编译错误。
为了解决这个问题,你需要将递归函数getResult的返回类型改为int,以与翻译后的代码匹配。修改后的代码如下:
```cpp
#include <iostream>
using namespace std;
void recursive(long long num, int count, int& ans) {
if (num == 1) {
ans = min(ans, count);
return;
}
if (num % 2 == 0) {
recursive(num / 2, count + 1, ans);
} else {
recursive(num + 1, count + 1, ans);
recursive(num - 1, count + 1, ans);
}
}
int getResult(long long num) {
int ans = INT_MAX;
recursive(num, 0, ans);
return ans;
}
int main() {
long long num;
cin >> num;
cout << getResult(num) << endl;
return 0;
}
```
这样修改后的代码应该可以正确编译和运行。
[Error] return-statement with a value, in function returning 'void' [-fpermissive]
这个错误通常是因为在一个返回类型为 `void` 的函数中使用了带有返回值的 `return` 语句。
例如:
```c++
void myFunction() {
return 0; // 错误,void 类型的函数不能有返回值
}
```
要解决这个错误,你需要确保你的函数返回类型为 `void`,并且不要在函数体中使用带有返回值的 `return` 语句。如果你需要在函数中返回一个值,那么你应该将函数的返回类型更改为相应的类型,如:
```c++
int myFunction() {
return 0; // 正确,返回类型为 int
}
```
阅读全文