警告:函数将始终返回True
Warning: Function will always return True
我有一个isPrime函数,无论输入的数字是什么,它总是返回true。我的程序中的其他几个bool函数也是如此。
我的简单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()的返回值,然后才能在while检查中检查它。你现在在用
做什么? while(!isNum)
表示您正在检查函数的地址,而不是它的返回类型。您可能想要做的是像这样的事情:
bool isPrimeRetVal;
do
{
bool isNumRetVal;
do
{
cout << "Enter Prime 1: ";
getline(cin, sa);
isNumRetVal = isNum(sa);
firstPrime = sa;
}
while(!isNumRetVal);
isPrimeRetVal = isPrime(firstPrime);
}
while(!isPrimeRetVal);
注意与while(!isPrime)相同的问题。
忽略isPrime
的返回值,而检查isPrime
的值(这不会改变,它始终是一个有效的函数)
您不是仅仅通过提及其名称来调用函数,例如while (!isNum)
。
该上下文中的函数名计算结果为指向该函数的指针。由于所有非空指针的值都是布尔值true
,并且指向任何函数的指针都不可能等于空指针,因此isNum
的值总是true
,而!isNum
的值总是false。
而不是:
do { ... isPrime(x); } while (!isPrime);
你需要写一些像这样的东西:
do { ... } while (!isPrime(x));
这两行:
isPrime(firstPrime);
while(!isPrime);
组合表明你不清楚c++中函数是如何调用的。第一行调用函数,然后丢弃结果。第二行甚至没有调用函数,它只是查看它的地址(永远不会为零)。
您可能需要:
while(!isPrime(firstPrime));
将firstPrime
传递给函数,然后查看函数的返回值。
您没有使用isPrime函数的返回值。IsPrime是一个函数,你应该将它的值存储在某个变量中,并在while循环中使用该变量。
isNum变量也是如此
相关文章:
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- C++如果使用 lambda 表达式的语句返回 true,但输出来自 false,为什么
- MFC 的 OnInit() 函数中的返回 true 和返回 false 有什么区别
- 我正在尝试创建一个布尔函数,该函数计算字符并在字符为"()*-+"时返回 true
- 创建一个函数,如果元素在unordered_set中,则返回 true,如何处理模板
- QTimer isActive 返回 true,但 remainingTime 返回 -1
- 为什么在 IsValid(Object) 返回 true 后不能安全地使用 Object?
- 计算 <Classtype*> 向量中所有项的布尔值的最有效方法,如果全部为真则返回 true
- QDir mkpath 返回 true,但未创建目录
- std::is_array 当它应该返回 false 时返回 true
- 尝试创建一个评估字符的bool函数,如果字母数字为字母,则返回true
- 我想返回 True/False 关于值是否在一组值中
- 为什么我的布尔函数返回 true 会导致读取访问冲突?
- ifstream::is_open 返回 true,即使该位置不存在文件也是如此
- 为什么包含指针的条件总是返回 true?
- 对于 ((无符号整数)0-1)返回 true>0
- 为什么#ifndef __func__返回true
- 我的bool函数一直返回true,我不知道为什么
- 对表达式求值,直到表达式返回true
- 在{8,4,6,2}中搜索4时,std::binary_search是否有任何实现将返回true