为什么(unsigned long long)-1 = 18446744073709551615.反正有什么办法确保-1保持-1?由于我目前正在使用C ++,所以我是新手。
unsigned long long a = -1;
cout << a << endl;
cout << (a >= 0) << endl; //This returns 1 which is what I don't understand. 1 is
//true for C++ right?
答案 0 :(得分:0)
unsigned
的非常定义意味着该类型不允许负整数(“有符号”)。如果将无符号的long long变量设置为-n
,则C ++ 应该一直环绕到2^64 - n
。
unsigned long long
的应该永远不要为负。因此,(a >= 0)
将始终取值为true
。
如果要存储较大的值但仍保持-1
,请考虑使用long long
(不使用unsigned
)。