C++切勿混用带符号类型和无符号类型

如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果。

因为带符号数会自动转化为无符号数。

例如 a*b,a=-1, b=1,a是int,b是unsigned int,如果在int占32位,则结果是4294967295。

即这里先将-1转化为无符号数,再乘1。当赋给无符号数一个超出它表示范围的数时,结果是初始值对无符号类型表示数值总数取模后的余数。

猜你喜欢

转载自www.cnblogs.com/ipursuei/p/9069731.html
今日推荐