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