我不明白如何使用返回布尔值的函数。我知道它是什么,但我无法弄清楚如何让它在我的程序中运行。我试图说,如果我的变量“选择”是“A”和“I”之间的任何字母,那么它是有效的并且可以继续到下一个名为calcExchangeAmt(amtExchanged, selection)
的函数。如果它是假的,我希望它询问用户是否要重复该程序以及他们是否同意重复。我希望它清除屏幕并重新启动到主功能。如何使我的程序按预期工作?
这是我的bool功能:
bool isSelectionValid(char selection, char yesNo, double amtExchanged)
{
bool validData;
validData = true;
if ((selection >= 'a' && selection <= 'i') ||
(selection >= 'A' && selection <= 'I'))
{
validData = calcExchangeAmt (amtExchanged, selection);
}
else(validData == false);
{
cout << "Do you wish to continue? (Y for Yes / N for No)";
cin >> yesNo;
}
do
{
main();
}
while ((yesNo =='y')||(yesNo == 'Y'));
{
system("cls");
}
return 0;
}
我收到了这个警告:
警告C4800:'double':强制值为bool'true'或'false'(性能警告)
答案 0 :(得分:1)
bool函数应该返回true或false。我猜你的警告是由于你将validData
声明为bool,然后给它分配了一个不同的值(由calcExchangeAmt
函数返回)。该值将从其值类型(double)转换为boolean(true或false)。
因此,如果选择有效,您的IsSelectionValid方法应返回true
,如果不是,则返回false
。然后,无论代码需要知道哪些信息都可以相应地进行。
我不太了解C ++,所以请原谅我的代码必然会遇到的语法问题,但是你的代码应该是这样的:
bool isSelectionValid(char selection)
{
return (selection >= 'a' && selection <= 'i') || (selection >= 'A' && selection <= 'I');
}
void myCallingFunction(double amtExchanged, char selection)
{
bool isSelectionValid = isSelectionValid(selection);
if(isSelectionValid)
{
double exchangeAmt = calcExchangeAmt (amtExchanged, selection);
}
else
{
cout<<"Do you wish to continue? (Y for Yes / N for No)";
cin>>yesNo;
if((yesNo =='y')||(yesNo == 'Y'))
{
main(); // or whatever code starts another attempt
}
}
答案 1 :(得分:0)
这段代码非常令人困惑,非常像非C ++。我们通常期望main()是驱动事物并调用其他函数的函数,而不是从其他地方调用它。除非有令人信服的理由(我在这里没有看到),否则我们通常会避免do
。我认为名为calcExchangeAmt
的函数返回true或false的可能性极小;我怀疑它实际上会返回一个你应该做其他事情的数字(显示给用户?)。
随着这一切的进行,尝试解释实际的编译器错误消息的价值有限。你的代码全都是内外的。如果对你有意义,Anna Lear的回答似乎是一个更好的起点。
答案 2 :(得分:-2)
0的类型不是bool
;是{false}是bool
。它告诉你0是双精度,但它强制它为布尔类型。