c語言運算過程中的型別自動轉換原則

lzw_6666發表於2017-10-20

1.由低階向高階轉換

例如char->short->int->unsigned->long->double<-float


2.在相同的字長情況下,有有符號數向無符號數的轉換原則是:有符號數在計算機中以補碼的形式存在,有符號數補碼的二進位制就是要轉換成無符號數的二進位制。

例   unsigned  int  i=3;求i*(-1)=?   由於i是unsigned  型別,所以要先將-1轉換為 unsigned int 型別,  unsigned int 是4個位元組,-1的補碼是FFFFFFFF.

所以i*(-1)相當於3*0xFFFFFFFF=0x2FFFFFFFD,   unsigned int是4個位元組,去掉高位2,剩下是0xFFFFFFFD,也就是說i*(-1)=0xFFFFFFFD= 4294967293

                                                                           

相關文章