在 C 語言中,四則運算可能導致資料型別的轉換,這種轉換稱為隱式型別轉換。以下是一些常見的資料型別轉換情況:
1. 整數提升:當不同大小的整數型別(如 `char`、`short`、`int`、`long`)進行混合運算時,較小的運算元會被提升為較大的型別,以便進行運算。例如,`char` 型別的運算元會被提升為 `int` 型別。
char c = 10;
int i = 20;
int result = c + i; // char 型別 c 被提升為 int 型別
2. 整數轉換:當不同大小的整數型別進行運算時,結果可能被轉換為更大的型別。例如,兩個 `int` 相加的結果可能會被轉換為 `long`。
short s = 1000;
int i = 2000;
long result = s * i; // short 型別 s 和 int 型別 i 的結果轉換為 long 型別
3. 浮點數轉換:當整數與浮點數進行運算時,整數會被轉換為浮點數。這種轉換通常發生在將整數除以浮點數或整數與浮點數相加時。
int num = 10;
float f = 5.5;
float result = num / f; // 整數 num 被轉換為浮點數進行除法運算
4. 符號擴充套件:當有符號整數型別和無符號整數型別進行運算時,有符號整數可能會被轉換為無符號整數,導致符號擴充套件。
signed int s = -10;
unsigned int u = 20;
unsigned int result = s + u; // 有符號整數 s 被轉換為無符號整數進行加法運算
5. 精度丟失:在浮點數運算時,可能會發生精度丟失。例如,將 `float` 與 `double` 相加時,結果可能會被截斷為 `float` 型別。
float f1 = 3.14;
double d = 2.71828;
float result = f1 + d; // double 型別 d 被截斷為 float 型別
這些型別轉換是由 C 語言的標準規定的,程式設計師需要了解這些規則,以確保正確的資料型別轉換和運算結果。