表達(dá)式求值的過程中,往往會(huì)伴隨著數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換,而數(shù)據(jù)類型的轉(zhuǎn)換的一般情況如下所示,從低到高。
long double
double
float
unsigned long int
long int
unsigned int
int
有幾點(diǎn)需要注意:
1. 這里沒有出現(xiàn)char,short,enum,因?yàn)樗鼈儠?huì)被自動(dòng)轉(zhuǎn)換為int或是unsigned int類型
2. 當(dāng)unsigned int 和 int 出現(xiàn)在同一個(gè)式子中時(shí),需要注意,如:5u – 10,結(jié)果是大于0的,不是-5,而是4294967291
3. 另外對(duì)于32位機(jī),由于long int的表現(xiàn)形式與int相同,unsigned int的表現(xiàn)形式與unsigned long int相同,因此long int的數(shù)值范圍無法包含unsigned int,因此在32位機(jī)進(jìn)行處理時(shí),它們間的類型的自動(dòng)轉(zhuǎn)換可以理解為4位的有符號(hào)自動(dòng)轉(zhuǎn)為4位的無符號(hào),然后再向上轉(zhuǎn)為float型等;如 unsigned int a = 45; long int b = 2147483643; a + b中可以理解為都轉(zhuǎn)換成了unsigned long類型