Skip to content

0.2 Why char Exists

ผมมี 8 bits: 01000001 — นี่คือตัวเลข 65? หรือตัวอักษร A? หรืออย่างอื่น?

คำตอบ: ขึ้นอยู่กับ “ข้อตกลง”

Section titled “คำตอบ: ขึ้นอยู่กับ “ข้อตกลง””

ข้อตกลงเหล่านั้นเรียกว่า encoding

Encoding01000001 หมายถึง
ASCIIตัวอักษร A
Integerตัวเลข 65

char คือข้อตกลงที่ว่า: “bits เหล่านี้แทนสัญลักษณ์ 1 ตัว”

  • ASCII ครอบคลุมภาษาอังกฤษ: A–Z, 0–9, เครื่องหมายพื้นฐาน → ใช้ 1 byte ต่อ char
  • Unicode (UTF-8) ครอบคลุมทุกอย่าง — อังกฤษ, ไทย (ก–ฮ), emoji (🎉), จีน, อารบิก → ใช้ 1–4 bytes ต่อ char

นี่คือที่กำเนิดของ char — ใน C มันเป็นแค่ integer ขนาด 8 bits

#include <stdio.h>
int main() {
char c = 65;
printf("%d\n", c); // 65 — ดูเป็นตัวเลข
printf("%c\n", c); // A — ดูเป็นตัวอักษร
printf("%zu\n", sizeof(char)); // 1 (byte)
return 0;
}

ใน C, char คือ integer 8-bit ตรงตัว จะเห็น A หรือ 65 ขึ้นอยู่กับว่าคุณขอให้ print แบบไหน

นี่คือ origin story ของ char type — ทุกภาษาอื่นสืบทอดแนวคิดนี้มา