C++ 当这个函数不应该返回值时,它如何返回值?

C++ 当这个函数不应该返回值时,它如何返回值?,c++,function,return,C++,Function,Return,此函数返回一个值,即使它不应该返回 #include<iostream> using namespace std; int foo(int a,int b) { if(a>b) return a; else if(a<b) return b; } int main() { int x=7,y=7; cout<<foo(x,y); return 0; } 也只在GDC编译器上使用DEV C

此函数返回一个值,即使它不应该返回

#include<iostream>
using namespace std;
int foo(int a,int b)
{
    if(a>b)
        return a;
    else if(a<b)
        return b;
}
int main()
{
    int x=7,y=7;
    cout<<foo(x,y);
    return 0;
}
<>也只在GDC编译器上使用DEV C++生成适当的输出。涡轮增压器C产生垃圾值。
有人能解释一下这是怎么发生的吗?

在所有程序控制路径上不返回值的行为是未定义的

编译器可以做任何事情


你的编译器没有警告过你吗?GCC也应该如此,Turbo C可能不是因为它的年龄。

这是未定义的行为,很简单。实际上,您希望返回值是什么?为什么7应该是正确的输出?我什么都不期望。我想知道它是如何返回7的。@SubramanianSridharan它可以返回任何东西。如果你真的想知道为什么它会用GCC返回7,你必须看看生成的汇编代码。讽刺的是,Turbo C给出警告,而DEV C++不!SuBrAMANIANSIDRADHANN也有适当的设置DEVC++将显示警告。@ SurBaMaNiangsRIDHARAN切换所有警告,假设的工具链GCC也会警告您。
7