1. ความสำคัญของชนิดข้อมูลในภาษา C
ในภาษา C ชนิดข้อมูล (Data Type) มีผลอย่างมากต่อความถูกต้องและประสิทธิภาพของโปรแกรม ชนิด char
และ int
ถือเป็นชนิดข้อมูลพื้นฐานที่ถูกใช้งานบ่อยในโปรแกรม และมักจำเป็นต้องแปลงค่าระหว่างกันอยู่เสมอ ในบทความนี้จะอธิบายวิธีแปลง char
และ int
พร้อมข้อควรระวังที่ควรรู้
ตัวอย่างการใช้งานทั่วไปของการแปลง
ในการเขียนโปรแกรม การแปลงระหว่าง char
กับ int
มีประโยชน์เมื่อคุณต้องการจัดการตัวอักษรกับค่าตัวเลขที่สอดคล้องกัน หรือกรณีต้องการประหยัดหน่วยความจำ เช่น การแปลงรหัส ASCII ที่เก็บใน char
เป็น int
เพื่อใช้คำนวณ หรือเมื่อรับค่าจาก char
แล้วต้องการประมวลผลเป็นตัวเลข การแปลงนี้จึงจำเป็น
2. การแปลงจาก char เป็น int
ในภาษา C การแปลงจาก char
เป็น int
สามารถทำได้ด้วยการ cast ซึ่งจะทำให้ค่าจาก char
ถูกจัดการเป็นจำนวนเต็มได้
วิธีแปลงพื้นฐาน
เมื่อต้องการแปลงค่า char
เป็น int
เพียงใช้ cast แบบง่ายๆ ก็เพียงพอ
#include <stdio.h>
int main() {
char character = 'A'; // ASCII ของ 'A' คือ 65
int intValue = (int)character; // cast char เป็น int
printf("ตัวอักษร %c มีรหัส ASCII เท่ากับ %d\n", character, intValue);
return 0;
}
โปรแกรมนี้จะทำการแปลงตัวอักษร 'A'
เป็นเลขจำนวนเต็ม และแสดงผลลัพธ์ที่ได้คือ 65
char แบบมีเครื่องหมายและไม่มีเครื่องหมาย
ในภาษา C มีทั้ง char
แบบมีเครื่องหมาย (signed char) ที่รับค่าได้ทั้งบวกและลบ และแบบไม่มีเครื่องหมาย (unsigned char) ที่รับค่าได้ตั้งแต่ 0 ถึง 255 ขณะทำการแปลงจาก char
เป็น int
ควรระวังความแตกต่างนี้ ตัวอย่างดังนี้
#include <stdio.h>
int main() {
unsigned char uChar = 200; // char แบบไม่มีเครื่องหมาย
int intValue = (int)uChar;
printf("ค่า unsigned char %u เมื่อแปลงเป็น int คือ %d\n", uChar, intValue);
return 0;
}
ตัวอย่างนี้จะเปลี่ยนค่า char
แบบไม่มีเครื่องหมาย 200 ไปเป็น int
แล้วแสดงผลเป็น 200 สำหรับแบบมีเครื่องหมาย ผลลัพธ์อาจต่างออกไปตามการจัดการเครื่องหมาย จึงควรตรวจสอบกรณีให้เหมาะสม

3. การแปลงจาก int เป็น char
การแปลงจาก int
เป็น char
คือการ cast ค่าจำนวนเต็มให้เป็นตัวอักษรขนาด 1 byte แต่หากค่าของ int
เกินขอบเขตของ char
อาจเกิดการสูญเสียข้อมูลได้
วิธีแปลงและข้อควรระวัง
ถ้าแปลงค่าที่อยู่นอกช่วง char
ผลลัพธ์อาจผิดคาด ดังตัวอย่าง
#include <stdio.h>
int main() {
int number = 300; // ค่านี้อยู่นอกช่วง char
char character = (char)number; // อาจเกิดข้อมูลสูญหาย
printf("จำนวนเต็ม %d เมื่อแปลงเป็น char ได้ตัวอักษร '%c'\n", number, character);
return 0;
}
ตัวอย่างนี้จะแปลง 300
เป็น char
ซึ่งจะได้ค่าผิดจากที่คาด เพราะ char
รับได้จำกัด ดังนั้นควรระวังช่วงค่าของ char
เสมอ
4. การแปลงจากสตริงเป็นตัวเลข
ในภาษา C การแปลงค่าจาก string (สตริง) เป็นตัวเลขใช้งานบ่อย เช่น รับค่าจากผู้ใช้แล้วแปลงเป็น int นิยมใช้ฟังก์ชัน atoi
หรือ strtol
ในการแปลง
การแปลงด้วยฟังก์ชัน atoi
atoi
แปลงสตริงเป็นจำนวนเต็มได้ง่าย แต่ไม่รองรับการตรวจสอบข้อผิดพลาด
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
int number = atoi(str); // แปลง string เป็น int
printf("สตริง %s เมื่อแปลงเป็นจำนวนเต็มได้ %d\n", str, number);
return 0;
}
ตัวอย่างนี้จะแปลง "1234"
เป็น 1234
แล้วแสดงผล แต่ถ้ามีข้อผิดพลาดจะตรวจสอบไม่ได้
การแปลงแบบปลอดภัยด้วย strtol
strtol
สามารถตรวจสอบข้อผิดพลาดขณะทำการแปลง string เป็นจำนวนเต็มได้ ทำให้ปลอดภัยกว่า
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
char *endptr;
long int number = strtol(str, &endptr, 10); // แปลง string เป็น int แบบปลอดภัย
if (*endptr != ' ') {
printf("การแปลงล้มเหลว\n");
} else {
printf("สตริง %s เมื่อแปลงเป็นจำนวนเต็มได้ %ld\n", str, number);
}
return 0;
}
โค้ดนี้จะเช็คกรณีแปลงผิดพลาดและแสดงข้อความแจ้งเตือน ทำให้จัดการกับข้อผิดพลาดได้ดีขึ้น
5. ตัวอย่างประยุกต์การใช้ char กับ int
สุดท้าย มาดูตัวอย่างการนำ char
และ int
ไปประยุกต์ใช้งานจริงร่วมกัน
การคำนวณผสมระหว่าง char และ int
โค้ดตัวอย่างนี้นำ char
กับ int
มารวมกันเพื่อสร้างอักขระใหม่
#include <stdio.h>
int main() {
char ch = 'a';
int num = 3;
char result = ch + num; // บวกค่าของ 'a' (ASCII) กับ 3
printf("ตัวอักษร %c บวกกับ %d ได้ตัวอักษร '%c'\n", ch, num, result);
return 0;
}
โค้ดนี้จะบวก ASCII ของ 'a'
กับ 3 ได้ 'd'
แสดงให้เห็นว่าการประมวลผลร่วมกันระหว่าง char
และ int
ทำได้ง่าย