AR Book การโปรแกรมคอมพวิ เตอร(Computer Programming) หนวยที่ 13 การเปลย่ี นชนดิ ขอ มลู (Data Type Conversion) จดั ทําโดย นายจกั ราวุธ แสนแกว
เนื้อหาสาระพอสงั เขปการเปลย่ี นชนิดขอมูล หลักการทํางานของตัวดําเนินการของภาษาซีน้ัน ขอมลู ที่นํามาดําเนินการกนั นน้ั จะตองมีชนิดขอมูลเดียวกัน หากขอมูลมีชนิดแตกตางกันจําเปนที่จะตองแปลงชนิดของขอมูลใหเปนชนิดเดียวกันกอน ซึ่งในภาษาซีมีการเปล่ียนชนิดของขอมูลอยู 2 วธิ ี ดังนี้
การเปลยี่ นชนดิ ของขอ มลู โดยอตั โนมตั ิ ในการคํานวณหาคานิพจนที่มีขอมูลตางชนิดกอนที่จะไดผลลัพธสุดทาย คอมไพเลอรจะแปลงชนดิ ของขอมูลท่ีนาํ มากระทาํ ตอกันใหเปนประเภทเดียวกันโดยอัตโนมัติ ซ่ึงมีการแปลงชนิดท่ีมีนัยสําคัญต่ํากวาไปเปนชนิดขอมูลท่ีมีนัยสําคัญสูงกวา เสมอ
ตาราง แสดงระดบั นัยสาํ คญั ของชนดิ ขอมูลชนดิ ของขอ มูล ระดับนัยสาํ คัญlong double นัยสาํ คญั สูงสดุDouble นยั สาํ คัญต่าํ สดุFloatunsigned long intlong intunsigned intIntShortChar
ตวั อยาง แสดงการเปลีย่ นชนิดขอ มูล แบบอตั โนมตั ขิ องนิพจน (c * a) + (d % b) – (a / d) โดยกําหนดให int a; float b; double c; char d; แสดงการแปลงนิพจนไ ดด ังนี้ (c * a) + (d % b) – (a / d) (double * int) + (char / float) – (int /char) double + float – int
double – int double ดังน้ัน ผลลพั ธสดุ ทายของนิพจนจะเปน ชนดิขอ มูล double การเปลย่ี นชนิดขอ มลู โดยใชค ําสงั่ การแปลงชนิดขอมูลจากชนิดหน่ึงไปเปนอีกขอมูลชนิดหน่ึง โดยใชคําส่ังโดยการแปลงเน่ืองจากชนิดของขอมูลในการเก็บผลลัพธไมสอดคลอ งกบั ขอมูล เชน กําหนดให int x; x = 5 * 10.5
x = 60 จะเห็นวา 5 * 10.5 = 52.5 แต x มีขอมูลเปน จํานวนเต็ม ดงั นน้ั x = 52 สว นทศนิยมจะถกูตดั ทิ้ง ดังนน้ั คา ของขอ มูลในนิพจน เราสามารถกําหนดไดเ อง ซง่ึ มีรูปแบบท่ัวไปดังนี้รูปแบบ (data type) expression; โดย data type คือ ชนดิ ของขอมูลปลายทาง Expression คือ นพิ จนหรือตวั แปรท่ีเองการเปลี่ยนชนดิ ขอมูล
ตวั อยา ง แสดงการเปล่ียนชนดิ ขอ มลู โดยใชคําสั่งกําหนดให double x = 10.5;int y = 2;ประโยคคาํ สั่ง ผลลัพธx + y ; 12.50(int) (x + y) ; 12x = (int) x + y ; 12.0x / y 5.25(int) x / y 5x = (int) x / y 5.25
โปรแกรม แสดงการแปลงชนดิ ขอ มูล 1 #include<stdio.h> 2 int main( ) 3 { int a,b; 4 float c,d; 5 b=5; 6 c=10.25; 7 printf(\"b+c = %f\n\",b+c); 8 printf(\"(int)(b+c) = %d\n\n\",(int)(b+c)); 9 printf(\"c/b = %f\n\",c/b);10 printf(\"(int)c/b = %d\n\n\",(int)c/b); a=(int)(d=c*(float)b);11 printf(\"a = %d, b = %d, d =
%f\n\",a,b,d); d =(c=(float)10)+0.5;12 printf(\"New value c = %f \nNew value13 d = %f\n\",c,d);14 getch( );15 return 0;16 }ผลลัพธข องโปรแกรม หนว ยที่ 13 การเปลย่ี นชนดิ ขอ มูล long double Double Float unsigned long int long int unsigned int Int Short Char
Search
Read the Text Version
- 1 - 10
Pages: