在程序中使用布尔函数时遇到问题
Trouble using a Boolean function in a program
我在使用布尔循环时遇到问题。我知道它们是 true/false 函数,但是当我 运行 我的程序时,它似乎总是 return "true" 值。是 main 设置 pass = true,还是 targetHR 将值设置为 true?我被难住了。
#include <iostream>
using namespace std;
bool targetHR(int, int);
int main()
{
int age = NULL, heartbeat;
while (age >= 0)
{
cout << "Enter your age: "; // Receives age from the user.
cin >> age;
if (age < 0)
{
break;
}
cout << "enter your heart beats per minute: "; // Receives heartbeat from user.
cin >> heartbeat;
bool pass = targetHR(age, heartbeat);
if (pass = true)
{
cout << "You are in your target heart rate." << endl;
}
if (pass = false)
{
cout << "You are not in your target heart rate." << endl;
}
cout << endl;
}
return 0;
}
我的目标是让 targetHR 进行计算,并在 true/false 时告诉主函数。我希望 main 仅具有依赖于 targetHR.
的响应
bool targetHR(int age, int heartbeat)
{
double maxHR, minTHR, maxTHR;
maxHR = 220 - age;
minTHR = maxHR * 0.60;
maxTHR = maxHR * 0.70;
// Debugging purposes.
// cout << "Max heartrate: " << maxHR << endl << "Min Target HR: " << minTHR << endl << "Max Target HR: " << maxTHR << endl;
if (heartbeat < minTHR || heartbeat > maxTHR)
{
return false;
}
else
{
return true;
}
}
我尝试通过将 true/false 更改为 1/0 来解决问题,但这并没有解决我的问题,所以我假设这不是问题所在。
it seems to always return the "true" value
因为您没有使用 Comparison operator, you're using Assignment operator,这将 return 分配给检查的值,所以 pass = true
将始终是 true
,而 pass = false
永远是 false
。你应该改变
if (pass = true)
到
if (pass == true)
或者只是
if (pass)
顺便说一句:一些编译器(如clang)会给出警告,不要忽略它们。
warning: using the result of an assignment as a condition without
parentheses
note: use '==' to turn this assignment into an equality comparison
我在使用布尔循环时遇到问题。我知道它们是 true/false 函数,但是当我 运行 我的程序时,它似乎总是 return "true" 值。是 main 设置 pass = true,还是 targetHR 将值设置为 true?我被难住了。
#include <iostream>
using namespace std;
bool targetHR(int, int);
int main()
{
int age = NULL, heartbeat;
while (age >= 0)
{
cout << "Enter your age: "; // Receives age from the user.
cin >> age;
if (age < 0)
{
break;
}
cout << "enter your heart beats per minute: "; // Receives heartbeat from user.
cin >> heartbeat;
bool pass = targetHR(age, heartbeat);
if (pass = true)
{
cout << "You are in your target heart rate." << endl;
}
if (pass = false)
{
cout << "You are not in your target heart rate." << endl;
}
cout << endl;
}
return 0;
}
我的目标是让 targetHR 进行计算,并在 true/false 时告诉主函数。我希望 main 仅具有依赖于 targetHR.
的响应bool targetHR(int age, int heartbeat)
{
double maxHR, minTHR, maxTHR;
maxHR = 220 - age;
minTHR = maxHR * 0.60;
maxTHR = maxHR * 0.70;
// Debugging purposes.
// cout << "Max heartrate: " << maxHR << endl << "Min Target HR: " << minTHR << endl << "Max Target HR: " << maxTHR << endl;
if (heartbeat < minTHR || heartbeat > maxTHR)
{
return false;
}
else
{
return true;
}
}
我尝试通过将 true/false 更改为 1/0 来解决问题,但这并没有解决我的问题,所以我假设这不是问题所在。
it seems to always return the "true" value
因为您没有使用 Comparison operator, you're using Assignment operator,这将 return 分配给检查的值,所以 pass = true
将始终是 true
,而 pass = false
永远是 false
。你应该改变
if (pass = true)
到
if (pass == true)
或者只是
if (pass)
顺便说一句:一些编译器(如clang)会给出警告,不要忽略它们。
warning: using the result of an assignment as a condition without parentheses
note: use '==' to turn this assignment into an equality comparison