Implicit Type Conversion (การแปลงชนิดข้อมูลโดยนัย)
คอมไพเลอร์แปลงชนิดข้อมูล **ขนาดเล็ก → ขนาดใหญ่** อัตโนมัติเมื่อมี Operation ระหว่าง Type ต่างกัน
ตัวอย่าง: หา ASCII ของ 'A'
#include <stdio.h>
int main() {
char character = 'A';
int number = 0;
int value;
value = character + number; // Implicit Conversion: char → int
printf("The ASCII value of A is: %d\n", value);
return 0;
}
ผลลัพธ์:
The ASCII value of A is: 65
อธิบาย
characterเป็นcharค่า'A'= ASCII 65numberเป็นintค่า 0character + number→charPromote เป็นint→ 65 + 0 = 65- เก็บใน
int value
ตัวอย่างเพิ่มเติม: ตัวอักษร 'P'
char character = 'P';
int value = character + 0;
printf("ASCII of P: %d\n", value); // 80
Integer Promotion Rules (การ Promote ชนิด Integer)
char/short → int → unsigned int → long → unsigned long → long long → unsigned long long
ใน Expression: Operand ขนาดเล็กกว่า int จะถูก Promote เป็น int ก่อนการคำนวณ
ตัวอย่าง: พิมพ์ ASCII Table (a-z)
#include
int main() {
for (int x = 97; x <= 122; x++) {
printf("%c ", x); // Implicit: int → char (ใน %c)
}
printf("\n");
return 0;
}
Output: a b c ... z
Implicit vs Explicit Conversion
| ประเภท | ชื่อ | ตัวอย่าง | ทำโดย |
|---|---|---|---|
| Implicit | Type Promotion / Coercion | int + float, char + int | Compiler (อัตโนมัติ) |
| Explicit | Type Casting | (int)float_val, (char)int_val | Programmer (เขียนโค้ด) |