วันพุธที่ 9 กรกฎาคม พ.ศ. 2557

2.9 การแปลงชนิดข้อมูลของภาษา C (C type conversion)

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
- - -
- - -
- - -
                        ที่มา : เจนวิทย์  เหลืองอร่าม และปิยวิทย์  เหลืองอร่าม, 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  
บรรทัดที่  ให้ พิมพ์ข้อความ  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( )  ผู้เขียนโปรแกรมควรจำให้ได้ทั้งหมด   เพื่อความสะดวกและรวดเร็วในการใช้เขียนโปรแกรมในโอกาสต่อไป
           

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

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