c++ 中 ~43 的输出是 -44,但我计算出 212。
在 C++ 中,我只是计算 ~43,这是我的代码:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char hjg = 43;
cout << ~hjg;
//43 -> 0010 1011
//212 -> 1101 0100
}
输出是
-44
。但当我用手机计算器计算时,我得到了212。
我的第一个问题是为什么输出为负?
第二个是为什么输出是
-44
相反212
?
char
正在升级为 int
。十六进制值是 0x2b~
应用于 int
0x2b,结果为 0xffffffd4
(如果您的实现使用 32 位整数)中的
0xffffffd4
是-44
,并且打印该值。我鼓励您自己进行实验:https://godbolt.org/z/3Ecf4YrWf