C++ 如果在功能中没有醒来
C++ If in function not woking
我对C++来说是全新的,我试图制作自己的"cmd"。仍然收到错误:"|11|错误:带有值的返回语句,在函数中返回'void' [-fpermissive]|"...请帮忙:(
在这里代码:
#include <iostream>
#include <string>
using namespace std;
void cmd(int command)
{
if (command == login)
{
cout << "Prikaz login neni k dispozici!";
return 0;
}
else
{
cout << "Prikaz ";
cout << command;
cout << " neni znamy!";
return 0;
}
}
int main()
{
cout << "Zadejte prikaz: ";
cin << command;
cmd(command);
return 0;
}
不知道你到底打算做什么,但下面的程序应该可以工作。您只是没有正确声明整数变量。
#include <iostream>
#include <string>
using namespace std;
int cmd(string command)
{
if (command == "login")
{
cout << "Prikaz login neni k dispozici!";
return 0;
}
else
{
cout << "Prikaz ";
cout << command;
cout << " neni znamy!";
return 0;
}
}
int main()
{
string command; /* Define String */
cout << "Zadejte prikaz: ";
cin >> command; /* Input */
cmd(command);
return 0;
}
为了扩展菲利普·布劳恩的答案,确切的问题是,如果一个函数被声明为void
,它就不能有一个实际的返回值。 [具体来说,它只能有一个类型void
的返回值,这基本上意味着它可以不返回任何内容,也可以返回另一个本身不返回任何内容的函数的结果。
// Valid. Function is void, and returns nothing.
void foo(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
return;
}
// Valid. Returns (with no return value) upon reaching end of function.
void bar(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
}
// Valid. Returns the result of foo(), which itself returns nothing.
void bat(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
return foo(arg, u, ments);
}
// Invalid. 3 is int, not void.
void baz(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
return 3;
}
// Valid again. Function is int, and returns int.
int quz(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
return 3;
}
// And formally invalid again. Returns (with no return value) at end of function, instead of returning an int.
// Causes undefined behaviour, which can be... well, anything, really.
int qaz(int arg, int u, int ments) {
doSomethingWith(arg, u, ments);
}
在函数声明和/或定义中,第一个类型(显示在名称之前)是函数的返回类型,并指示函数返回的内容。 如果是 void
,则不允许该函数具有返回值;任何 return
语句都必须不带表达式使用,或者与类型为 void
的表达式一起使用。
return
语句采用以下形式:
return /* expression */;
在这种情况下,表达式可以是任何有效的表达式(例如在 return 1 + 1;
或 return functionName();
中),或者对于返回类型为 void
的函数可以省略表达式。 请注意,对于返回类型为 void
的函数,不必省略它;下面是一个奇怪但完全有效的程序:
#include <iostream>
void iReturnVoid() {
std::cout << "I return void." << std::endl;
}
void andSoDoI() {
std::cout << "I must inform you that ";
return iReturnVoid();
}
int main() {
andSoDoI();
}
简而言之,表达式的类型必须与函数开头指定的类型匹配。
如果未显式提供 return
语句,则该函数在执行其 final 语句时返回;这被视为函数以 return 0;
结尾表示main()
,或者如果该函数以 return;
结尾表示任何其他函数。
另请注意,如果任何值返回函数返回而不返回值,无论是通过遇到和执行return;
显式返回,还是通过到达函数末尾隐式返回,则会导致未定义的行为。 (main()
由于其隐式返回语句返回 0
,因此不会隐式发生这种情况,但如果它遇到没有值的显式 return
语句,则可能会遇到麻烦。
我知道这对你的第一天编程来说可能有点复杂,但它基本上归结为:
return
语句的类型应与函数本身相同。 如果函数void
,则返回void
。 如果函数int
,则返回一个int
。 如果函数char*
,则返回指向char
的指针。 等等。- 如果程序到达
main()
末尾而没有遇到return
语句,它将隐式插入return 0;
语句以指示程序成功完成。 - 如果程序到达任何其他函数的末尾而没有遇到
return
语句,它会隐式插入一个空的return
语句,特别是"return;
"。 这对于void
函数来说很好,但可能会导致任何其他返回类型的函数出现问题。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- C++ 如果在功能中没有醒来