【问题标题】:How do I troubleshoot this crashing C code?如何解决这个崩溃的 C 代码?
【发布时间】:2014-09-27 22:37:15
【问题描述】:

所以我正在研究 C 编程中的 Euler 的 Phi 函数。一切似乎都很完美,直到我点击了这个 sn-p 代码并崩溃了。

while(a[i] != 0 || a[i]!= 1)
        {
            m=m*((a[i]-1)/a[i]);
            i++;
        } 

在此程序代码之前,用户输入一个值,然后确定素因数。

【问题讨论】:

  • 您可能希望在i 大于数组长度之前停止。
  • 数组中有什么?数组中是否嵌入了一些终止条件?
  • 可能是|| --> &&(因为a[i] != 0 || a[i]!= 1总是正确的)
  • 找到主要因素后,我用零填充了数组的其余部分。

标签: c arrays while-loop crash


【解决方案1】:
a[i] != 0 || a[i] != 1

这总是正确的,因为一个数字不能既是 0 又是 1。当a[i] 为零时,您可能会遇到除零条件。

我猜你是想写

a[i] != 0 && a[i] != 1

但我无法确定这一点,因为我看不到您的其余代码。但是,此更改将避免零除法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    相关资源
    最近更新 更多