所以我在做编程课时做了一点测试,并且对编码很新,我在代码中的某个地方犯了一个错误。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void main()
{
const int m = 4;
int n = 3, p = 46, i;
int X[m];
int q[m];
for (i = 0; i < m; i++)
q[i] = p;
q[i+1] = p - q[i] / n;
if (q[i] = 0)
{
X[i] = n;
}
else{ X[i] = q[i] / pow(n, m - i); }
cout << "Rezultatai: " << X << endl;
}
它一直显示变量X
和q
已损坏的错误,我不知道哪里出错了。
答案 0 :(得分:0)
问题很可能是您在数组范围之外阅读。您将q
声明为包含4个元素的数组,从索引0开始,到索引3结束。
for (i = 0; i < m; i++)
q[i] = p;
在for循环之后,i
将具有m
(4)的值,使其不是有效的下标。每次在此之后使用i
作为下标运算符(如q[i]
)时,您都处于未定义行为的范围内。导致腐败的原因是什么。我不知道你想做什么,但你需要确保0 <= i && i < m
。
其他一些事情:
if (q[i] = 0)
除了i
仍然不在q
的范围内之外,您还需要==
。 ==
运算符会比较相等,并按照您的预期评估true
或false
。 =
运算符为左侧运算符指定了正确的参数。它还评估对左参数的引用,因为任何&#34;不是零&#34;是true
而zero
是假的,这将编译并最终成为false
。
void main()
这应该是int main()
。