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值的方式.它输出一个1for true和a 0for false.如果要打印文本"true"或"false",可以使用boolalphaio操纵器:
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类型,因此比较等布尔操作的结果以整数编码.