การแปลงข้อมูลประเภทหนึ่งเป็นประเภทข้อมูลอื่นเรียกว่าการแปลงประเภท
- การแปลงประเภทโดยนัย
- การแปลงประเภทที่ชัดเจน
การแปลงประเภทโดยนัย
-
คอมไพเลอร์ให้การแปลงประเภทโดยนัยเมื่อตัวถูกดำเนินการเป็นประเภทข้อมูลที่แตกต่างกัน
-
คอมไพเลอร์จะทำโดยอัตโนมัติโดยแปลงประเภทข้อมูลขนาดเล็กลงเป็นประเภทข้อมูลที่ใหญ่ขึ้น
int i,x; float f; double d; long int l;

ในที่สุด นิพจน์ข้างต้นจะประเมินเป็นค่า 'สองเท่า'
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างสำหรับการแปลงประเภทโดยนัย -
int x;
for(x=97; x<=122; x++){
printf("%c", x); /*Implicit casting from int to char %c*/
} การแปลงประเภทที่ชัดเจน
-
การแปลงประเภทที่ชัดเจนทำได้โดยผู้ใช้โดยใช้ตัวดำเนินการ (type)
-
ก่อนทำการแปลง จะมีการตรวจสอบรันไทม์เพื่อดูว่าประเภทปลายทางสามารถเก็บค่าต้นทางได้หรือไม่
int a,c; float b; c = (int) a + b
ที่นี่ผลลัพธ์ของ 'a+b' จะถูกแปลงเป็น 'int' อย่างชัดเจนแล้วกำหนดเป็น 'c'
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างสำหรับการแปลงประเภทที่ชัดเจน -
int x;
for(x=97; x<=122; x++){
printf("%c", (char)x); /*Explicit casting from int to char*/
} ให้เราดูความแตกต่างระหว่างการแปลงทั้งสองประเภทพร้อมตัวอย่าง -
ตัวอย่าง (การแปลงโดยนัย)
#include<stdio.h>
main(){
int i=40;
float a;
//Implicit conversion
a=i;
printf("implicit value:%f\n",a);
} ผลลัพธ์
Implicit value:40.000000
ตัวอย่าง (การแปลงที่ชัดเจน)
#include<stdio.h>
main(){
int i=40;
short a;
//Explicit conversion
a=(short)i;
printf("explicit value:%d\n",a);
} ผลลัพธ์
Explicit value:40