gpt4 book ai didi

c++ - 我的程序崩溃了,我找不到原因

转载 作者:行者123 更新时间:2023-11-28 05:36:31 39 4
gpt4 key购买 nike

我用 C++ 编写了一个实现分数的程序。我做到了,因为它是我在家学习的 C++ 类(class)的一种家庭作业。该程序可以编译,但在启动后会很快崩溃。我自己搜索了一个答案,我发现它在创建新对象时崩溃了。这是错误的代码。

//a and b are for the numerators and denominator in the fraction: a/b
ZFraction::ZFraction(int numer, int denom):m_numer(numer), m_denom(denom)//this constructor made it crash
{
if(m_numer != 0)
{
m_numer = m_denom % m_numer;
m_denom = m_denom/m_numer;
}
else
{
cout << "Fraction impossible";
}
}

为什么会崩溃?提前致谢。

最佳答案

m_numer 的值在分区之间变化。例如,如果您有 denom = 20numer = 10,则行

m_numer = m_denom % m_numer

分配 m_numer = 0。然后在计算 m_denom 时除以零。我建议使用原始值进行计算,即

ZFraction::ZFraction(int numer, int denom):m_numer(numer), m_denom(denom)
{
if(numer != 0)
{
m_numer = denom % numer;
m_denom = denom/numer;
}
else
{
cout << "Fraction impossible";
}
}

附带说明一下,考虑抛出一个异常而不是写在 cout 上,这样如果 numer == 0,您将不会有一个带有虚假值的构造对象。

此外,分子是分数顶部而非底部的名称。

关于c++ - 我的程序崩溃了,我找不到原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38183357/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com