[英]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.