c++ - 为什么在 "release "模式下生成的可执行文件给出了错误的结果?

标签 c++ visual-studio

#include <iostream>


int maxComDiv(int mayor, int menor)
{
    int resto = mayor % menor;
    if (resto > 0) maxComDiv(menor, resto);
    else return menor;
}

int main()
{
    std::cout << "max comon divisor: " << maxComDiv(3654, 1365) << std::endl;
}

使用 visual studio 2015 社区更新 2 --> 在 Release模式下失败。那么在 Debug模式。 使用 mingw64 --> 在两种模式下都很好。

最佳答案

程序的行为未定义,因为macComDivreturn在所有控件上定义路径。

我想你是想写 if (resto > 0) return maxComDiv(menor, resto);

(在 C++ 中没有隐式返回值)。

这说明了调试版本和发布版本之间的差异。

关于c++ - 为什么在 "release "模式下生成的可执行文件给出了错误的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647598/

相关文章:

c++ - 等号对大括号初始化有影响吗?例如。 'T a = {}' 与 'T a{}'

c++ - 从二进制中提取数组数据的正确方法?

c++ - 删除文件中的空行

c# - 按钮内的 WPF 按钮单击问题

c - 在 Visual Studio 2010 中编译 C WinSock 代码时出现结构重复错误

c# - 在 Visual Studio 中获取 C# 类的所有接口(interface)

c++ - 使用 SFINAE 原理时重载函数有歧义

c++ - mingw中#elif的使用

visual-studio - 将 VS 转换为 GCC 内联汇编

c++ - 非类类型的重载运算符[ ]