Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么函数工作得很好,但最终没有返回_C++_Function_Return - Fatal编程技术网

C++ 为什么函数工作得很好,但最终没有返回

C++ 为什么函数工作得很好,但最终没有返回,c++,function,return,C++,Function,Return,我有一个关于定义末尾没有返回语句的函数的问题。它是如何工作的?它可以返回一些东西,因为当我们调用func时,要返回的值在堆栈上以随机数分配?检查以下示例: #include <iostream> using namespace std; int fun1(){ cout << "Fun1" << endl; } char fun2(){ cout << "Fun2" << endl; } short fun3()

我有一个关于定义末尾没有返回语句的函数的问题。它是如何工作的?它可以返回一些东西,因为当我们调用func时,要返回的值在堆栈上以随机数分配?检查以下示例:

#include <iostream>

using namespace std;

int fun1(){
    cout << "Fun1" << endl;
}

char fun2(){
    cout << "Fun2" << endl;
}

short fun3(){
    cout << "Fun3" << endl;
}

float fun4(){
    cout << "Fun4" << endl;
}

double fun5(){
    cout << "Fun5" << endl;
}

int main()
{

   cout << fun1() << " " << endl;
   cout << fun2() << " " << endl;
   cout << fun3() << " " << endl;
   cout << fun4() << " " << endl;
   cout << fun5() << " " << endl;
}
#包括
使用名称空间std;
int fun1(){

cout为了创建一个没有任何返回语句的函数,您需要将其设置为“void”函数。请记住,用于定义函数的变量类型是将在函数末尾返回的变量类型。如果函数为Int类型,则返回一个整数。如果函数为Char类型,则返回一个字符

上面的示例不起作用,因为在每种情况下,编译器都希望在函数末尾返回。但是如果在每个函数名之前都有“void int”,则函数将起作用,如下所示

void int fun1()
{
     cout << "Fun1" << end;
}
void int fun1()
{

可能只是UB。请参阅。对于单个函数,如果它总是抛出异常且从未到达末尾,则不是错误。对于main()以外的任何函数,通过到达末尾从函数返回都是可以的。使用函数的结果是未定义的行为。因此,double x=fun5();是未定义的行为;只是fun5();很好是一个异常,其行为就好像您返回了0。@Boperson:没有引发异常,这是胡说八道。您误解了这个问题。它可以与某些编译器一起工作,您指定了返回值,但从不返回任何内容。我正在使用Visual Studio 2015,创建一个没有返回指令的非空函数将返回错误。让我感到奇怪的是编译器实际上不会给出某种构建错误。@丹尼尔.d>代码> Voint int Fun1(){} /Case>不是合法的C++,请看一下。