为什么5u和-5u的输出不同?

时间:2017-04-29 11:38:29

标签: c++

cout<<-5u

它输出:65531为什么?

cout<<5u 

它只给出输出5 那么为什么输出不同为什么-5u不能给-5输出。

1 个答案:

答案 0 :(得分:3)

在C ++中无符号整数下溢和溢出well defined way(与有符号整数相对应)。特别是,算术运算是mod 2^n,其中n是表示unsigned int的位数。 -5u相当于0u - 5u,等于(0u - 1u) - 4u0u - 1u提供UINT_MAX(或std::numeric_limits<unsigned>::max()),即65535。所以你有-5u = 65535 - 4 = 65531