我知道如果你的bool函数只打印出一些文本,有两种方法可以打印出结果。一个非常简单,就像这样:
#include <iostream>
using namespace std;
bool function(int x)
{
int y=5;
return x==y;
}
int main(void)
{
int a;
cin >> a;
if(function(a))
cout << "Equal to 5";
else
cout << "Not equal to 5";
}
我曾经知道在同一行中使用cout和bool在一行内打印出一些“消息”的其他方法,但以下解决方案并不能解决问题。这有什么问题?
cout << function(a) ? "Equal" : "Not equal";
我收到通知函数调用函数将始终返回true,这很奇怪。
答案 0 :(得分:4)
根据您的编译器,它可能会发出警告,准确说明问题所在。
main.cpp:15:21: warning: operator '?:' has lower precedence than '<<'; '<<' will be evaluated first [-Wparentheses]
cout << function(a) ? "Equal" : "Not equal";
~~~~~~~~~~~~~~~~~~~ ^
main.cpp:15:21: note: place parentheses around the '<<' expression to silence this warning
cout << function(a) ? "Equal" : "Not equal";
^
( )
main.cpp:15:21: note: place parentheses around the '?:' expression to evaluate it first
cout << function(a) ? "Equal" : "Not equal";
main.cpp:15:26: warning: expression result unused [-Wunused-value]
cout << function(a) ? "Equal" : "Not equal";
正如@The Paramagnetic Croissant所说,用括号括起来。
cout << (function(a) ? "Equal" : "Not equal");
按@WhozCraig's comment,解释是顺序。如警告所示,首先评估<<
,结果为(cout << function(a)) ? "Equal : "Not Equal";
。这将返回&#34; Equal&#34; (或&#34;不等于&#34;,它不重要),导致随后的&#34;表达结果未使用&#34;警告。
答案 1 :(得分:2)
尝试
cout << (function(a) ? "Equal" : "Not equal");
答案 2 :(得分:2)
我不确定您是否意味着您的意思,甚至是否需要,但您是否考虑过使用std::boolalpha
?
std::cout << function(5) << ' ' << function(6) << std::endl;
std::cout << std::boolalpha << std::function(5) << ' ' << function(6) << std::endl;
输出:
1 0
true false