unsigned int i =6;
int j = -20;
如果执行 i + j ,会将int型转换为unsigned int ,所以-20会变成一个很大的数,i + j的结果不是-14.
(当表达式存在有符号类型和无符号类型时,有符号类型会自动转换成无符号类型)
隐式转换原则:
(1) 为防止精度损失,类型总是被提升为较宽的类型.比如一个long 跟一个int的数相加,那么int的数会先被转为long.
(2) 所有含有小于int型的有序类型的算术表达式在计算之前,其类型都会先被转成int..如一个long型跟一个char型相加,那么char型会先被转成int型,然后发现是跟long型数相加,再将此int型转成long型,再相加.