由于调试行,函数正在工作

Function working because of debugging line

本文关键字:函数 工作 于调试 调试      更新时间:2023-10-16

我正在查找谐波数,只要输入了我用来调试程序的线路,函数就会循环,直到找到正确的谐波数cout线在最后。如果我删除cout的任何部分,程序就会再次失败。我完全不知道国家电视台是如何影响这个节目的。没有它,所有东西都会存储零。

struct fraction
{
  long nume, denom;
};
void add (fraction x, fraction y, fraction& result)
{
  long Numerator, Denominator, GCD, Higher, Lower;
  Numerator = (x.nume * y.denom + x.denom * y.nume);                                                                                       
  Denominator = (x.denom * y.denom);  
if (Numerator > Denominator)
  {
    Lower = Denominator;
    Higher = Numerator;
  }
else if (Numerator < Denominator)
  {
    Higher = Denominator;
    Lower = Numerator;
  }
while (Higher % Lower > 0)
  {                                                                              
    GCD = Higher % Lower;                                                                                                  
    Higher = Lower;                                                                                                 
    Lower = GCD;
  }
result.nume = Numerator/GCD;
result.denom = Denominator/GCD;
cout << "d " << result.nume << "   " << GCD << "   " << Denominator/GCD << " " << result.denom << endl;

}

您没有Higher和Lower的默认值,因此当这两个条件都不成立时,将发生未定义的行为:

if (Numerator > Denominator)

否则如果(分子<分母)

我建议您打开编译器警告,以便报告类似的错误。如果你使用的是GCC/Clang打开"-墙"。

当您使用调试器进行调试时,这应该是一个容易捕获的问题。