C ++关于unsigned long long

时间:2018-08-20 13:20:25

标签: c++

为什么(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?

1 个答案:

答案 0 :(得分:0)

unsigned的非常定义意味着该类型不允许负整数(“有符号”)。如果将无符号的long long变量设置为-n,则C ++ 应该一直环绕到2^64 - n

unsigned long long应该永远不要为负。因此,(a >= 0)将始终取值为true

如果要存储较大的值但仍保持-1,请考虑使用long long(不使用unsigned)。