# C語言教學10 - 型別轉換
## 撰寫於2018年9月
[現代C語言小心得](https://hackmd.io/s/HJPpJjvw7)
## 隱性轉型
整數和整數間,浮點數和浮點數之間,都可以直接轉換型態,但是會有精度以容量的問題。
```C=
int main() {
long int l = 20L;
int i = 3;
float f = 3.2f;
double d = 5.4;
l = i; // (O)
i = l; // (O)
f = d; // (O)
d = f; // (O)
}
```
浮點數和整數之間也可以隱性轉型。
```C=
int main() {
long int l = 20L;
int i = 3;
float f = 3.2f;
double d = 5.4;
l = f; // (O) 會無條件捨去
i = d; // (O) 會無條件捨去
f = i; // (O)
d = l; // (O)
}
```
## 強制轉型 Casting
假如對隱性轉型方式不滿意,或是不同型別無法隱性轉型時,可以使用強制轉型。
用法:
(型別)東西
```C=
int main() {
long int l = 20L;
int i = 3;
float f = 3.2f;
double d = 5.4;
printf("%d, %f, %ld", (int)d, (float)i, (long int)f);
}
```