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