- 当一个算术表达式中既有无符号数(用unsigned修饰的数据类型),又有int值时,此时,该int值就会转换成无符号数(如果该值为负数,则该值变为加上2^32后,再对2^32取余)
unsigned u = 10;
int i = -42;
std::cout << i + u << std::endl;//如果int为32位,输出4 294 967 264,即(-42 + 2^32) + 10
总之,当从一个无符号数中减去一个值时,不管这个值是不是无符号数,都必须确保结果不能是一个负值
unsigned u = 10;
int i = -42;
std::cout << i + u << std::endl;//如果int为32位,输出4 294 967 264,即(-42 + 2^32) + 10