ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับพื้นฐานของการแปลงชนิดข้อมูล C++ ด้วยความช่วยเหลือจากตัวอย่าง
C++ ช่วยให้เราสามารถแปลงชนิดข้อมูลหนึ่งเป็นอีกชนิดข้อมูลหนึ่งได้ นี้เรียกว่า Type Conversion
การแปลงชนิดข้อมูลมีสองประเภทใน C ++
- การแปลงโดยนัย (Implicit Conversion)
- การแปลงอย่างชัดเจน (Explicit Conversion) เรียกอีกอย่างว่า Type Casting
การแปลงประเภทโดยนัย (Implicit Conversion)
การแปลงประเภทที่คอมไพเลอร์ทำโดยอัตโนมัติเรียกว่าการแปลงประเภทโดยนัย การแปลงประเภทนี้เรียกอีกอย่างว่าการแปลงอัตโนมัติ
ให้เราดูตัวอย่างสองตัวอย่างของการแปลงประเภทโดยนัย
ตัวอย่างที่ 1: การแปลงจาก int เป็น double
#include <iostream>
using namespace std;
int main() {
int num_int = 9;
double num_double;
num_double = num_int;
cout << "num_int = " << num_int << endl;
cout << "num_double = " << num_double << endl;
return 0;
}
เอาท์พุต

ในโปรแกรม เราได้กำหนดข้อมูลของ int ให้กับตัวแปร double
num_double = num_int;
ที่นี่ int ค่าจะถูกแปลงเป็น double โดยอัตโนมัติโดยคอมไพเลอร์ ก่อนที่จะถูกกำหนดให้กับตัวแปร num_double และนี่คือตัวอย่างของการแปลงประเภทโดยนัย
ตัวอย่างที่ 2: การแปลงอัตโนมัติจาก double เป็น int
#include <iostream>
using namespace std;
int main() {
int num_int;
double num_double = 9.99;
num_int = num_double;
cout << "num_int = " << num_int << endl;
cout << "num_double = " << num_double << endl;
return 0;
}
เอาท์พุต

ในโปรแกรม เราได้กำหนดข้อมูล double ให้กับตัวแปร int
num_int = num_double;
ที่นี่ double ค่าจะถูกแปลงเป็น intโดยอัตโนมัติโดยคอมไพเลอร์ ก่อนที่จะถูกกำหนดให้กับตัวแปร num_int และนี่เป็นตัวอย่างของการแปลงประเภทโดยนัย
หมายเหตุ: เนื่องจาก int ไม่สามารถมีทศนิยมได้ ตัวเลขที่อยู่หลังจุดทศนิยมจะถูกตัดทอนในตัวอย่างเอาท์พุต
ข้อมูลสูญหายระหว่างการแปลง (Data Loss During Conversion)
การแปลงให้แคบลง (Narrowing Conversion)
ดังที่เราได้เห็นจากตัวอย่างข้างต้น การแปลงจากประเภทข้อมูลหนึ่งไปเป็นอีกประเภทหนึ่งมีแนวโน้มที่จะสูญเสียข้อมูล กรณีนี้เกิดขึ้นเมื่อข้อมูลประเภทที่ใหญ่กว่าถูกแปลงเป็นข้อมูลประเภทที่เล็กกว่า

การแปลงอย่างชัดเจน C++ Explicit Conversion
เมื่อผู้ใช้เปลี่ยนข้อมูลจากประเภทหนึ่งเป็นอีกประเภทหนึ่งด้วยตนเอง สิ่งนี้เรียกว่าการแปลงแบบชัดแจ้ง การแปลงประเภทนี้เรียกอีกอย่างว่าการหล่อแบบ (type casting)
มี 3 วิธีหลักที่เราสามารถใช้การแปลงที่ชัดเจนใน C ++ พวกเขาคือ:
- C-style type casting (เรียกอีกอย่างว่า cast notation )
- Function notation (เรียกอีกอย่างว่า old C++ style type casting )
- Type conversion operators
C-style type casting
เป็นชื่อ C-style type casting นี้เป็นที่ชื่นชอบโดยการเขียนโปรแกรมภาษา C
ไวยากรณ์สำหรับสไตล์นี้คือ:
(data_type)expression;
ตัวอย่างเช่น,
// การเริ่มต้นตัวแปร int
int num_int = 26;
// ประกาศตัวแปร double
double num_double;
// แปลงจาก int เป็น double
num_double = (double)num_int;
Function-style Casting
นอกจากนี้เรายังสามารถใช้ฟังก์ชันเช่น notation เพื่อส่งข้อมูลจากประเภทหนึ่งไปยังอีกประเภทหนึ่ง
ไวยากรณ์สำหรับสไตล์นี้คือ:
data_type(expression);
ตัวอย่างเช่น,
// การเริ่มต้นตัวแปร int
int num_int = 26;
// ประกาศตัวแปร double
double num_double;
// แปลงจาก int เป็น double
num_double = double(num_int);
ตัวอย่างที่ 3: Type Casting
#include <iostream>
using namespace std;
int main() {
// initializing a double variable
double num_double = 3.56;
cout << "num_double = " << num_double << endl;
// C-style conversion from double to int
int num_int1 = (int)num_double;
cout << "num_int1 = " << num_int1 << endl;
// function-style conversion from double to int
int num_int2 = int(num_double);
cout << "num_int2 = " << num_int2 << endl;
return 0;
}
เอาท์พุต

เราใช้ทั้ง C style type conversion และ function-style casting for type conversion และแสดงผล เนื่องจากพวกเขาทำงานเดียวกัน ทั้งคู่จึงให้ผลลัพธ์ที่เหมือนกัน
Type Conversion Operators
นอกจากการทำงานทั้ง 2 ประเภทนี้แล้ว C ++ ยังมีตัวดำเนินการ 4 ตัว สำหรับการแปลงชนิดข้อมูล พวกเขาเป็นที่รู้จักในฐานะ operators for type conversion พวกเขาคือ:
- static_cast
- dynamic_cast
- const_cast
- reinterpret_cast
เราจะเรียนรู้เกี่ยวกับนักแสดงเหล่านี้ในบทช่วยสอนในภายหลัง