ยินดีต้อนรับเพื่อนๆ เอกคอมพิวเตอร์ศึกษา และผู้ที่เวะเข้ามาชมทุกคนคับ ที่เข้ามาเยี่ยมชมเว็บบร็อกของผม ยินดีต้อนรับเข้าสู้เว็บไซต์http://teenemerux.blogspot.com

วันจันทร์ที่ 13 กุมภาพันธ์ พ.ศ. 2555

การแปลงชนิดข้อมูลของภาษา 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
- - -
- - -
- - -

ที่มา : เจนวิทย์ เหลืองอร่าม และปิยวิทย์ เหลืองอร่าม, 2543 : 72.

      ในตารางที่ 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 */
/* This program calculate emloyees share */
#include<stdio.h>
#include<conio.h>
void main(void)
{
int profits, employees; /* บรรทัดที่ 1 */
clrscr(); /* บรรทัดที่ 2 */
profits = 9; /* บรรทัดที่ 3 */
employees = 2; /* บรรทัดที่ 4 */
printf("Each employee gets %d\n",profits/employees); /* บรรทัดที่ 5 */
getch();
}

ผลลัพธ์ที่ได้จากโปรแกรม
แผนผังลำดับงาน: จอภาพ: Each  employee  gets 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 */
/* This program calculates employee share. */
#include<stdio.h>
#include<conio.h>
void main(void)
{
int profits, employees;
clrscr();
profits = 9;
employees = 2 ;
printf("Each employee gets %f", (float) profits/employees); /* บรรทัดที่ 1 */
getch();
}


ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: Each employee gets 4.500000

คำอธิบายโปรแกรม
       โปรแกรมข้างต้นจะเหมือนกับโปรแกรมที่ 2.4 ทุกประการยกเว้น บรรทัดที่ 1 ในการคำนวณ (float) profits / employees เป็นการเปลี่ยนตัวแปร profits จากชนิดข้อมูล int ให้เป็น float ชั่วคราว ดังนั้นผลลัพธ์ที่ได้จากโปรแกรมจึงเป็น 4.500000 และใช้ %f ในการควบคุมการแสดงผล
จากโปรแกรมตัวอย่างที่ 2.5 ข้างต้นได้ใช้ฟังก์ชัน printf( ) เพื่อแสดงให้อยู่ในรูปแบบที่ต้องการ โดยใช้รหัสรูปแบบ %f (format code) %f เป็นรหัสรูปแบบการพิมพ์ข้อมูลชนิด float (ซึ่งรายละเอียดกล่าวไว้ในบทที่ 3 ตารางที่ 3.2) ได้สรุปรหัสรูปแบบการพิมพ์ข้อมูลทั้งหมดที่ใช้กับฟังก์ชัน printf( ) ผู้เขียนโปรแกรมควรจำให้ได้ทั้งหมด เพื่อความสะดวกและรวดเร็วในการใช้เขียนโปรแกรมในโอกาสต่อไป

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

มุมแซตมันๆ คับผม