先上代码
// 将警告提升为error
// #pragma warning(error:4715)
int TempFunction()
{
return 1111;
}
int Test(/*int aaaa*/)
{
if (0)
{
return 0;
}
TempFunction();
}
int main ()
{
cout << Test() <<endl;
system("pause");
return 0;
}
.......显而易见 没有写return
好吧 应该是我没有注意warning
#pragma warning(error:4715)这样设置 可以将warning提高为error
而注掉TempFunction或者 使用一个临时变量 返回为0
那么TempFunction为什么会导致 Test函数在没有return的情况下 返回一个 正确的值呢
经过研究 查资料
一般函数的返回值是放在 eax 寄存器里的,不管你的 return 带值与否,通用寄存器里总有一个值,这个值可能不具任何意义。
所以 不管也没写return 都会用eax这个值
但是这个 都合编译器和操作系统应该都有关系 具体的处理可能不一样