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