C語言中,四則運算導致資料型別的轉換

iZJ"Qq4577105發表於2024-03-22

在 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 語言的標準規定的,程式設計師需要了解這些規則,以確保正確的資料型別轉換和運算結果。

相關文章