繁体   English   中英

在c ++中打印一个布尔值

[英]printing a boolean value in c++

当我运行这个简单的代码时,

int main(int argc, const char * argv[])
{
      bool digit(true);
      std::cout << digit << " " << ~digit << std::endl;
}

输出是

1 -2

我期待1和0(对于真和假)。 我在这里错过了什么吗?

~执行按位否定。 操作数被提升(在这种情况下)为int ,并且所有位都被反转。 1具有00....001的二进制表示,因此这给出二进制值11....110 ,其被解释(在大多数现代计算机上)为-2。

! 为了逻辑否定。

~是按位非(或位反转)运算符。 逻辑非运算符是'!'。

    cout << !digit;

你需要一个逻辑非运算符'!'。你可以试试这个;

cout << !(digit);

编辑:-

虽然我知道它已经很晚但是试图改进我的答案,所以~是按位运算符。 所以,如果你写的东西~1000那么它就会变成0001

实质上:

 1 -> 00000001
~1 -> 11111110
4 bits integer
1 -> 0001

find the complement by adding 1
0001 + 0001 = 0010 = 2

the complement is -2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM