不要求解决方案或任何事情,只是一般性问题。当调用getgcd()函数时,我得到一个浮点异常。为什么是这样?我研究了这个,但找不到直接的答案。谢谢,下面是我正在使用的代码。
#include <iostream>
using namespace std;
class D: public E {
private:
int var2;
public:
D(int var, int var2) : E(var) {
var2 = var2;
}
void getgcd() {
int temp;
int newVar = E::var;
while (var != 0) {
temp = newVar % var2;
newVar = var2;
var2 = temp;
}
cout << "The GCD of " << newVar << " and " << var2 << " is " << var2 << endl;
}
};
#include <iostream>
#include "A4p2.cpp"
#include "A4p3.cpp"
using namespace std;
int main(int argc, char *argv[]) {
int x, y;
x = atoi(argv[1]);
y = atoi(argv[2]);
if (x < 1 || x > 50) {
cout << "Input must be between 1-50" << endl;
exit(0);
}
E test(x);
D test1(x, y);
test.play();
test1.getgcd();
return 0;
}
答案 0 :(得分:2)
SIGFPE
上将整数除法/模数映射为零,然后将其天真地打印为&#34;浮点异常&#34;。我不认为我曾经看到它来自浮点运算(可能是因为大多数FP异常必须明确打开,而整数除零总是在x86上出错)。
很可能
中var2
等于零
temp = newVar % var2;
反过来,这可能是因为在该循环中,您正在检查var
但是正在使用/修改var2
。
while (var != 0) {
temp = newVar % var2;
newVar = var2;
var2 = temp;
}
您可能想要while (var2 != 0)
。