unsigned u1 =42,u2=10;
cout<<u2-u1<<endl;
输出结果为4294967264。
原因:无符号整数相减,结果为负数时,会取该负数mod(4294967296)的值。
unsigned 的最大值为:
(10-42)mod(4294967296) = 4294967264(商取-1,遵循让商向负无穷靠近的原则)
unsigned u1 =42,u2=10;
cout<<u2-u1<<endl;
输出结果为4294967264。
原因:无符号整数相减,结果为负数时,会取该负数mod(4294967296)的值。
unsigned 的最大值为:
(10-42)mod(4294967296) = 4294967264(商取-1,遵循让商向负无穷靠近的原则)