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 }

 

posted @ 2013-01-06 10:17  周尚武  阅读(176)  评论(0编辑  收藏  举报