C++中含无符号整数的表达式
如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果,这是因为i带符号数会自动地转换成无符号数。
因此,切勿将无符号数与有符号数混用
例如:
unsigned u = 10;
int i = -42;
std::cout << i + i << std::endl; //输出-84
std::cout << u + i << std::endl; //如果int占32位,输出4294967264
如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果,这是因为i带符号数会自动地转换成无符号数。
因此,切勿将无符号数与有符号数混用
例如:
unsigned u = 10;
int i = -42;
std::cout << i + i << std::endl; //输出-84
std::cout << u + i << std::endl; //如果int占32位,输出4294967264