cout<<-5u
它输出:65531为什么?
cout<<5u
它只给出输出5 那么为什么输出不同为什么-5u不能给-5输出。
答案 0 :(得分:3)
在C ++中无符号整数下溢和溢出well defined way(与有符号整数相对应)。特别是,算术运算是mod 2^n
,其中n
是表示unsigned int
的位数。 -5u
相当于0u - 5u
,等于(0u - 1u) - 4u
。 0u - 1u
提供UINT_MAX
(或std::numeric_limits<unsigned>::max()
),即65535
。所以你有-5u = 65535 - 4 = 65531
。