【发布时间】:2014-06-19 19:38:51
【问题描述】:
我有一个 isPrime 函数,它总是返回 true,不管输入的数字是多少。这对于我的程序中的其他几个布尔函数也是一样的。
我的简单 isPrime 函数:
bool isPrime(mpz_class num)
{
bool prime = true;
for (int i=2; i<num; i++)
if (num % i == 0)
prime = false;
return prime ;
}
调用它(我怀疑这是问题所在,但我不知道问题是什么):
do
{
do
{
cout << "Enter Prime 1: ";
getline(cin, sa);
isNum(sa);
firstPrime = sa;
}
while(!isNum);
isPrime(firstPrime);
}
while(!isPrime);
isNum 函数也每次都返回“true”。
运行时错误:
warning: the address of 'void isNum(std::string)' will always evaluate as 'true' [-Waddress]|
有人看到问题了吗?
【问题讨论】:
-
你能告诉我们
isNum()吗? -
您认为
!isPrime和!isNum会做什么?这些是函数,它们接受参数。此外,错误消息是 not 告诉您该函数将始终返回 true。它告诉你一些不同的东西。 -
while(!isPrime)错误是指这一行,您正在检查该函数的地址是否等于零(永远不会是这种情况)。 -
你需要复习一下如何使用函数及其返回值。
-
函数调用需要括号。
isPrime引用函数并计算其地址;它没有调用它。isPrime(n)将是一个电话。一旦你解决了这个问题,你就需要清理你的程序逻辑。