C类型转换
当执行算术运算时,如果类型不同都会发生类型转换
1、如果整形转换为signed不丢失数据,就转换为signed.否则需要转换为unsigned
如:
一类型为signed int,另一类型为unsigned short,因为signed可以容纳unsigned short的全部值,所以unsigned short会转为signed int.
一类型为unsigned int,另一类型为signed int,则signed int会转换为unsigned int.
Demo1:
1 main() 2 { 3 if(-1 < (unsigned char)1) 4 { 5 //会进入到这里,unsigned char会转换为signed int 6 } 7 else 8 { 9 //不会进入到这里 10 } 11 }
Demo2
1 main() 2 { 3 if(-1 < (unsigned int)8) 4 { 5 6 } 7 else 8 { 9 //要小心了,会进入到这里,因为-1类型为signed,会转换为unsigned int类型,而二进制位又没变,所以-1是会被理解为一个很大的正数 10 } 11 }