如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果。
因为带符号数会自动转化为无符号数。
例如 a*b,a=-1, b=1,a是int,b是unsigned int,如果在int占32位,则结果是4294967295。
即这里先将-1转化为无符号数,再乘1。当赋给无符号数一个超出它表示范围的数时,结果是初始值对无符号类型表示数值总数取模后的余数。
如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果。
因为带符号数会自动转化为无符号数。
例如 a*b,a=-1, b=1,a是int,b是unsigned int,如果在int占32位,则结果是4294967295。
即这里先将-1转化为无符号数,再乘1。当赋给无符号数一个超出它表示范围的数时,结果是初始值对无符号类型表示数值总数取模后的余数。