Type casting เป็นวิธีแปลงตัวแปรจากชนิดข้อมูลหนึ่งไปอีกชนิดหนึ่ง เช่น ต้องการเก็บค่า 'long' ลง integer แบบง่าย สามารถ type cast 'long' เป็น 'int' ได้ แปลงค่าจากประเภทหนึ่งไปอีกประเภทอย่างชัดเจนด้วย cast operator ดังนี้
(type_name) expression
ตัวอย่าง cast operator ทำให้การหารตัวเลขจำนวนเต็มสองตัวทำเป็น floating-point operation
ตัวอย่าง
#include <stdio.h>
main() {
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean);
}
ผลลัพธ์:
Value of mean : 3.400000
cast operator มี precedence สูงกว่าการหาร ค่า sum แปลงเป็น double ก่อน แล้วค่อยหาร count ได้ค่า double
Type conversions สามารถเป็น implicit (คอมไพเลอร์ทำเอง) หรือ explicit ผ่าน cast operator ถือเป็น good practice ใช้ cast operator เมื่อต้องแปลงชนิด
Integer Promotion
Integer promotion คือกระบวนการแปลงค่าประเภท integer ที่ "เล็กกว่า" int หรือ unsigned int ให้เป็น int หรือ unsigned int ตัวอย่างบวก character กับ integer
ตัวอย่าง
#include <stdio.h>
main() {
int i = 17;
char c = 'c'; /* ascii value is 99 */
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum);
}
ผลลัพธ์:
Value of sum : 116
ค่า sum เป็น 116 เพราะคอมไพเลอร์ทำ integer promotion แปลง 'c' เป็น ASCII ก่อนบวก
Usual Arithmetic Conversion
Usual arithmetic conversions แปลงค่าให้เป็นชนิดร่วมกันโดยอัตโนมัติ คอมไพเลอร์ทำ integer promotion ก่อน ถ้ายังต่างชนิด จะแปลงเป็นชนิดที่สูงสุดในลำดับชั้น

Usual arithmetic conversions ไม่ทำกับ assignment operators และ logical operators && และ || ตัวอย่างเข้าใจแนวคิด
ตัวอย่าง
#include <stdio.h>
main() {
int i = 17;
char c = 'c'; /* ascii value is 99 */
float sum;
sum = i + c;
printf("Value of sum : %f\n", sum);
}
ผลลัพธ์
Value of sum : 116.000000
เข้าใจง่าย: c แปลงเป็น integer ก่อน แต่ค่าสุดท้ายเป็น double usual arithmetic conversion ทำงาน คอมไพเลอร์แปลง i และ c เป็น 'float' บวกกันได้ 'float'