C++ 位操作平铺

C++ 位操作平铺,c++,bit,tilde,C++,Bit,Tilde,我知道tilde会翻转每一位,但如果我这样做的话,int num=~0 为什么结果是num=-1,既不是int的最大值,也不是unsigned int?但它是unsigned的最大值: #include <iostream> #include <limits> int main() { std::cout << ( unsigned(-1) == std::numeric_limits<unsigned>::max() )

我知道tilde会翻转每一位,但如果我这样做的话,
int num=~0


为什么结果是
num=-1
,既不是
int
的最大值,也不是
unsigned int

但它是
unsigned
的最大值:

#include <iostream>
#include <limits>

int main() {
  std::cout << ( unsigned(-1) == std::numeric_limits<unsigned>::max() )
            << std::endl;
  return 0;
}
#包括
#包括
int main(){

std::cout但如果我做int unsigned int num=~0,结果是num=4294967295,我想这应该是无符号intUnsigned 4294967295和有符号-1具有相同位模式的最大值。@JonathanPotter明白了!谢谢!