Sas*_*san 2 c++ iostream boolean
我有c ++代码
int main()
{
int a = 5, b=5;
bool c;
c = a == b;
cout << c << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出为1
有人请解释我如何输出1和为什么不是真的?
因为这是默认std::ostream::operator<<
格式化bool
值的方式.它输出一个1
for true
和a 0
for false
.如果要打印文本"true"
或"false"
,可以使用boolalpha
io操纵器:
std::cout << std::boolalpha << c;
Run Code Online (Sandbox Code Playgroud)
这是默认stream
行为,但您可以使用std::boolalpha
以下方式请求文本表示:
#include <iomanip>
...
cout << std::boolalpha << c << endl;
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档和示例.
它默认显示0
时间false
和1
时间的true
原因主要是历史性的 - 最长时间C没有专用bool
类型,因此比较等布尔操作的结果以整数编码.