C++中的布尔流输出表示

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和为什么不是真的?

Ben*_*ley 8

因为这是默认std::ostream::operator<<格式化bool值的方式.它输出一个1for true和a 0for false.如果要打印文本"true""false",可以使用boolalphaio操纵器:

std::cout << std::boolalpha << c;
Run Code Online (Sandbox Code Playgroud)


Ton*_*roy 5

这是默认stream行为,但您可以使用std::boolalpha以下方式请求文本表示:

#include <iomanip>

...

cout << std::boolalpha << c << endl;
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档和示例.

它默认显示0时间false1时间的true原因主要是历史性的 - 最长时间C没有专用bool类型,因此比较等布尔操作的结果以整数编码.