2.9 การแปลงชนิดข้อมูลของภาษา C (C type conversion)
เมื่อเราเขียนโปรแกรมมักจะพบว่า
ใช้ตัวดำเนินการกับตัวแปรของชนิดข้อมูลแตกต่างกัน
เพื่ออำนวยความสะดวกในการเขียนโปรแกรมภาษา C จึงได้กำหนดกฎเกณฑ์ดังนี้
ถ้าค่าตัวแปร หรือค่าคงที่ต่างชนิดกัน
ให้ทำการเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น
โดยให้ศึกษารายละเอียดในตารางที่ 2.9 ต่อไปนี้พอสังเขปตารางที่ 2.10 แสดงการเปลี่ยนแปลงชนิดของข้อมูล
ชนิดของข้อมูล x
|
ชนิดของข้อมูล y
|
x ชนิดของข้อมูล y
|
int | long | long |
char | int | int |
int | float | float |
int | double | double |
float | double | double |
long | double | double |
ชนิดข้อมูลต่าง ๆ
|
long double
|
long double
|
- - -
|
- - -
|
- - -
|
ในตารางที่ 2.9 แถวที่ 1 จะเห็นว่า x เป็นตัวแปรชนิดข้อมูลแบบ int และ y เป็นตัวแปรข้อมูลแบบ long เมื่อนำ x และ y มา บวก ลบ คูณ และหารกัน ผลลัพธ์ที่ได้จะเป็นชนิดข้อมูลแบบ long (เพราะ long มีพิสัยในการเก็บข้อมูลกว้างกว่า int) เช่น
int x = 7;
float y = 2;
- ถ้า x/2 จะได้ผลลัพธ์เป็น 3 (ชนิดข้อมูลแบบ int)
- ถ้า x/y จะได้ผลลัพธ์เป็น 3.500000 (ชนิดข้อมูลแบบ float)
ข้อสังเกต ภาษา C เป็นภาษาที่ดีมาก ที่อำนวยความสะดวกในการแปลงชนิดข้อมูลของตัวแปรให้ใหญ่ขึ้น ทำให้ไม่มีปัญหาในการเก็บข้อมูลและเราไม่ต้องกังวลผลที่ได้จากการดำเนินการ ของตัวแปรในนิพจน์ต่าง ๆ นอกจากนี้ภาษา C ยังอนุญาตให้เราแปลงชนิดข้อมูลได้ชั่วคราวด้วยตัวผู้เขียนโปรแกรมเอง โดยให้ศึกษาโปรแกรมตัวอย่างที่ 2.4 และโปรแกรมตัวอย่างที่ 2.5 โดยโปรแกรมตัวอย่างที่ 2.4 แสดงการคำนวณค่าจ้างที่ผิด ส่วนโปรแกรมตัวอย่างที่ 2.5 แสดงการคำนวณค่าจ้างที่ถูกโดยการเปลี่ยนแปลงชนิดข้อมูลชั่วคราวโปรแกรมตัวอย่างที่ 2.4 แสดงโปรแกรมการคำนวณค่าจ้างที่ผิด
/* errcal.c */ |
||||
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 2.4 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
จากโปรแกรมตัวอย่างที่ 2.4 เราคงเห็นแล้วว่าผลหารที่ได้จะเป็นจำนวนเต็ม ส่วนที่เป็นเลขทศนิยมจะตัดทิ้งไป เมื่อภาษา C ทำงานกับข้อมูลชนิดจำนวนเต็ม เพื่อแก้ปัญหาที่เกิดการผิดพลาด ในกรณีนี้เราสามารถเปลี่ยนชนิดข้อมูลได้ชั่วคราว คือ เปลี่ยนตัวแปร profits จากชนิดข้อมูลแบบ int ไปเป็น float ชั่วคราว ดังตัวอย่างโปรแกรมที่ 2.5 ต่อไปนี้
บรรทัดที่ 1 เป็นการประกาศตัวแปร profits และ employees ให้เป็นชนิด int
บรรทัดที่ 2 เป็นคำสั่งให้ลบจอภาพ
บรรทัดที่ 3 และ 4 กำหนดค่าให้กับตัวแปร โดย profits มีค่า 9 และ employees มีค่า 2
บรรทัดที่ 5 ให้ พิมพ์ข้อความ Each employee gets 4 ออกแสดงที่จอภาพ โดยตัวเลข 4 ได้จากการคำนวณ 9/2 คือค่าของตัวแปร porfits/ employees
โปรแกรมตัวอย่างที่ 2.5 แสดงโปรแกรมการเปลี่ยนแปลงชนิดข้อมูลชั่วคราว
/* change.c */ |
||||
ผลลัพธ์ที่ได้จากโปรแกรม
โปรแกรมข้างต้นจะเหมือนกับโปรแกรมที่ 2.4 ทุกประการยกเว้น บรรทัดที่ 1 ในการคำนวณ (float) profits / employees เป็นการเปลี่ยนตัวแปร profits จากชนิดข้อมูล int ให้เป็น float ชั่วคราว ดังนั้นผลลัพธ์ที่ได้จากโปรแกรมจึงเป็น 4.500000 และใช้ %f ในการควบคุมการแสดงผล
จากโปรแกรมตัวอย่างที่ 2.5 ข้างต้นได้ใช้ฟังก์ชัน printf( ) เพื่อแสดงให้อยู่ในรูปแบบที่ต้องการ โดยใช้รหัสรูปแบบ %f (format code) %f เป็นรหัสรูปแบบการพิมพ์ข้อมูลชนิด float (ซึ่งรายละเอียดกล่าวไว้ในบทที่ 3 ตารางที่ 3.2) ได้สรุปรหัสรูปแบบการพิมพ์ข้อมูลทั้งหมดที่ใช้กับฟังก์ชัน printf( ) ผู้เขียนโปรแกรมควรจำให้ได้ทั้งหมด เพื่อความสะดวกและรวดเร็วในการใช้เขียนโปรแกรมในโอกาสต่อไป
ไม่มีความคิดเห็น:
แสดงความคิดเห็น