在C ++中打印布尔数据类型的值

时间:2018-07-29 01:10:11

标签: c++

我正在学习C ++,遇到一个问题link,它说bool是C ++中的基本数据类型,但是当我打印true或false的值时,结果是1或0。我期望true或错误。

我决定重载<<操作符以打印true字符串以获取布尔值,而false字符串以false值显示,但是当我重载该函数时,我得到了一个错误error: ambiguous overload for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'bool') < / p>

我相信这是因为<<已被重载以输出1表示true,0表示false。当bool是基本数据类型时,打印1表示true并打印0表示false是不是错误?

仅是为了澄清投票人,不是我不能使它起作用,我想问一下为什么它被设计成以这种方式起作用。如果您看到流行语言(例如python),则不是这种情况。

1 个答案:

答案 0 :(得分:3)

尝试一下:

bool b1 = false;
bool b2 = true;

std::cout << std::boolalpha << b1 << std::endl;
std::cout << std::noboolalpha << b1 << std::endl;

std::cout << std::boolalpha << b2 << std::endl;
std::cout << std::noboolalpha << b2 << std::endl;

输出:

false
0

true
1