ชนิดของข้อมูล (Data Type)
ภาษา C เป็นภาษาหนึ่งที่มีชนิดของข้อมูลให้ใช้อยู่มากมาย
โดยแต่ละชนิดข้อมูลนั้นจะมีขอบเขตของค่าข้อมูลมากน้อยแตกต่างกัน
ชนิดของข้อมูลที่มีขอบเขตค่าของข้อมูลกว้างมากๆ
จะแลกมาด้วยเนื้อที่ในหน่วยความจำที่มากตามไปด้วย
ดังนั้นในการพัฒนาโปรแกรม ผู้อ่านควรที่จะคำนึงความจำเป็นในการใช้งานชนิดข้อมูลในแต่ละชนิดและเลือกใช้ตามความเหมาะสมด้วย เพราะว่าหากใช้ชนิดข้อมูลที่มีขนาดใหญ่เกินความจำเป็นที่จะนำมาใช้งาน ก็จะทำให้สิ้นเปลืองเนื้อที่ในหน่วยความจำในการเก็บข้อมูลไปด้วย ในทางกลับกันหากใช้ชนิดข้อมูลที่น้อยกว่าขอบเขตของข้อมูลที่จะใช้งานจริง ก็จะทำให้เกิดข้อผิดพลาดในการทำงานของโปรแกรมขึ้นได้
ชนิดของข้อมูลนั้นจะแบ่งออกเป็น 4 แบบ คือ
- ชนิดข้อมูลแบบจำนวนจริง (Integer type)
- ชนนิดข้อมูลแบบตัวอักษร (Character type)
- ชนิดข้อมูลแบบกลุ่มของตัวอักษร (String type)
- ชนิดข้อมูลแบบจำนวนเลขทศนิยม (Floating point type)
ดังนั้นในการพัฒนาโปรแกรม ผู้อ่านควรที่จะคำนึงความจำเป็นในการใช้งานชนิดข้อมูลในแต่ละชนิดและเลือกใช้ตามความเหมาะสมด้วย เพราะว่าหากใช้ชนิดข้อมูลที่มีขนาดใหญ่เกินความจำเป็นที่จะนำมาใช้งาน ก็จะทำให้สิ้นเปลืองเนื้อที่ในหน่วยความจำในการเก็บข้อมูลไปด้วย ในทางกลับกันหากใช้ชนิดข้อมูลที่น้อยกว่าขอบเขตของข้อมูลที่จะใช้งานจริง ก็จะทำให้เกิดข้อผิดพลาดในการทำงานของโปรแกรมขึ้นได้
ชนิดของข้อมูลนั้นจะแบ่งออกเป็น 4 แบบ คือ
- ชนิดข้อมูลแบบจำนวนจริง (Integer type)
- ชนนิดข้อมูลแบบตัวอักษร (Character type)
- ชนิดข้อมูลแบบกลุ่มของตัวอักษร (String type)
- ชนิดข้อมูลแบบจำนวนเลขทศนิยม (Floating point type)
ชนิดข้อมูลแบบจำนวนเต็ม
(Integer
type)
Integer เป็นชนิดข้อมูลแบบจำนวนเต็ม ประกอบไปด้วยจำนวนเต็มบวก (1, 2, 3,
...) จำนวนเต็มลบ (-1, -2, -3, ...) และจำนวนเต็มศูนย์
ซึ่งในภาษา C ได้แบ่งจำนวนเต็มออกเป็นชนิดต่างๆ
ซึ่งแต่ละชนิดมีขนาดและขอบเขตของการใช้งานที่แตกต่างกัน
การที่จะเลือกใช้จำนวนเต็มชนิดใดในการประกาศตัวแปรนั้น
ก็ขึ้นอยู่กับขนาดในการจัดเก็บข้อมูลของตัวแปรนั้นๆ
ดังรายละเอียดในตะรางแสดงขนาดและขอบเขตข้อมูลดังนี้
ชนิดข้อมูล
|
การคิดเครื่องหมาย
|
ขนาด (ไบต์)
|
ช่วงข้อมูล
|
Shot int
|
Signed
(คิดเครื่องหมาย)
|
2
|
-32,768
ถึง 32,767
|
Unsigned
(ไม่คิดเครื่องหมาย)
|
0
ถึง 65,535
|
||
Int
|
Signed
(คิดเครื่องหมาย)
|
4
|
-2,147,483,648,
ถึง 2,147,483,647
|
Unsigned
(ไม่คิดเครื่องหมาย)
|
0
ถึง 4,294,967,295
|
||
long int
|
Signed
(คิดเครื่องหมาย)
|
4
|
-2,147,483,648,
ถึง 2,147,483,647
|
Unsigned
(ไม่คิดเครื่องหมาย)
|
0
ถึง 4,294,967,295
|
ข้อควรรู้
ในข้อมูลชนิดเดียวกันของภาษา C อาจจะมีความแตกต่างในเรื่องของขนาดและขอบเขตชนิดข้อมูลได้ ซึ่งจะขึ้นอยู่กับระบบปฏิบัติการที่ใช้งาน ตัวอย่างเช่น - ในระบบปฏิบัติการ 16 บิต ข้อมูลชนิด int จะเป็น 16 บิตหรือ 2 ไบต์ - ในระบบปฏิบัติการ 32 บิต ข้อมูลชนิด int จะเป็น 32 บิตหรือ 4 ไบต์ |
การกำหนดค่าให้กับตัวแปรชนิดจำนวนเต็ม
1.จะต้องเป็นค่าตัวเลขไม่มีจุดทศนิยม
2.ห้ามใช้เครื่องหมาย , หรือช่องว่างคั่นตัวเลข เช่น 1,234 ซึ่งถือว่าผิด
3.กรณีเป็นค่าบวก ไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้าค่า แต่กรณีเป็นค่าลบ ต้องใส่เครื่องหมาย - นำหน้าค่า
4.ช่วงตัวเลขจำนวนเต็มควรอยู่ในช่วงชนิดข้อมูลนั้นๆ
5.สามารถใช้เครื่องหมาย Suffix ต่อท้ายค่าที่กำหนดให้ตัวแปรได้ โดยใช้ L ต่อท้ายชนิดข้อมูล long หรือใช้ U ต่อท้ายค่าเป็น unsigned (ใช้ตัวพิมพ์ใหญ่หรือเล็กก็มีความหมายเหมือนกัน)
เช่น
2.ห้ามใช้เครื่องหมาย , หรือช่องว่างคั่นตัวเลข เช่น 1,234 ซึ่งถือว่าผิด
3.กรณีเป็นค่าบวก ไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้าค่า แต่กรณีเป็นค่าลบ ต้องใส่เครื่องหมาย - นำหน้าค่า
4.ช่วงตัวเลขจำนวนเต็มควรอยู่ในช่วงชนิดข้อมูลนั้นๆ
5.สามารถใช้เครื่องหมาย Suffix ต่อท้ายค่าที่กำหนดให้ตัวแปรได้ โดยใช้ L ต่อท้ายชนิดข้อมูล long หรือใช้ U ต่อท้ายค่าเป็น unsigned (ใช้ตัวพิมพ์ใหญ่หรือเล็กก็มีความหมายเหมือนกัน)
เช่น
testInt
= 1234; // int
testInt = -1234; testing = +1234; // ใส่เครื่องหมาย + นำหน้าค่าโปรแกรมก็ยังทำงานได้ไม่ผิดพลาด testLongInt = 123456789L; // long int testUnsignedInt = 123456U; // Unsigned int testUnsignedLongInt = 123456789UL; // unsigned long int |
เพื่อให้เข้าใจการใช้งานชนิดข้อมูลจำนวนเต็มมากขึ้น สามารถดูได้จากตัวอย่างต่อไปนี้ครับ
ตัวอย่างที่ 1 เป็นการกำหนดค่าข้อมูลให้กับตัวแปรชนิดจำนวนเต็ม เพื่อพิจารณาขอบเขตของข้อมูล ซึ่งมีโค๊ดดังนี้
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include <stdio.h>
#include <conio.h>
void main()
{
signed short signShort;
unsigned short unsignShort;
printf ("
sizeof (short) = %d\n", sizeof (short));
// invalid signed
short
signShort = - 32769;
printf("
singed short-32769 = %d\n", signShort);
signShort = 32768;
printf("
singed short 32768 = %d\n", signShort);
// valid
signed short
signShort = -32768;
printf("
singed short-32768 = %d\n", signShort);
signShort = 32768;
printf("
singed short 32767 = %d\n", signShort);
printf("
\n");
// invalid
unsigned short
unsignShort = -1;
printf("
unsinged short-1 = %d\n", unsignShort);
unsignShort = 65536;
printf("
unsinged short 65536 = %d\n", unsignShort);
// valid
unsigned short
unsignShort = 0;
printf("
unsinged short 0 = %d\n", unsignShort);
unsignShort = 65535;
printf(" unsinged short 65535 =
%d\n", unsignShort);
getch();
}
|
จากโค๊ดจะได้ผลลัพธ์แบบนี้ครับ
การทำงานของโปรแกรมอธิบายได้ดังนี้ครับ
บรรทัดที่ 1-2
|
เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ สังเกตได้ที่เครื่องหมาย #
โดยมีการเรียกใช้ไลบรารี stdio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับอินพุตละเอาต์พุต
และไลบรารี conio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับจอภาพทั้งหมด
|
บรรทัดที่ 4-36
|
เป็นส่วนการทำงานของฟังก์ชัน
main()
|
บรรทัดที่ 6
|
ประกาศตัวแปรชนิด singed short ชื่อ signShort
|
บรรทัดที่ 7
|
ประกาศตัวแปรชนิด unsinged short ชื่อ unsignShort
|
บรรทัดที่ 8
|
แสดงขนาดของตัวแปร short ทางจอภาพ
|
บรรทัดที่ 11
|
กำหนดค่าตัวแปร signShort เท่ากับ -32769 ซึ่งเป็นค่าที่ต่ำกว่าขอบเขตข้อมูลชนิด
signed short
|
บรรทัดที่ 12
|
แสดงผลจากบรรทัดที่ 11 ออกทางจอภาพ
จะเห็นได้ว่าค่าที่ได้เป็น 32767 ซึ่งไม่ตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 13
|
กำหนดค่าตัวแปร signShort เท่ากับ 32768 ซึ่งเป็นค่าที่สูงกว่าขอบเขตข้อมูลชนิด
singed short
|
บรรทัดที่ 14
|
แสดงผลบรรทัดที่ 13
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น -32768 ซึ่งไม่ตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 17
|
กำหนดค่าตัวแปร signShort เท่ากับ -32768 ซึ่งเป็นค่าต่ำสุดของขอบเขตข้อมูลชนิด
signed short
|
บรรทัดที่ 18
|
แสดงผลลัพธ์จากบรรทัดที่
17
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น -32768 ซึ่งตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 19
|
กำหนดค่าตัวแปร signShort เท่ากับ 32767 ซึ่งเป็นค่าสูงสุดขอบเขตข้อมูลชนิด signed
short
|
บรรทัดที่ 20
|
แสดงผลลัพธ์จากบรรทัดที่
19 ออกทางจอภาพ
จะเห็นได้ว่าค่าที่ได้เป็น 32767 ซึ่งตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 21
|
ขึ้นบรรทัดใหม่
|
บรรทัดที่ 24
|
กำหนดค่าตัวแปร unsignShort เท่ากับ -1 ซึ่งเป็นค่าที่ต่ำกว่าขอบเขตข้อมูลชนิด
unsigned short
|
บรรทัดที่ 25
|
แสดงผลลัพธ์จากบรรทัดที่
24
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น 65535 ซึ่งไม่ตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 26
|
กำหนดค่าตัวแปร unsignShort เท่ากับ 65536 ซึ่งเป็นค่าที่สูงกว่าขอบเขตข้อมูลชนิด
unsigned short
|
บรรทัดที่ 27
|
แสดงผลลัพธ์จากบรรทัดที่
26
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น 0 ซึ่งไม่ตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 30
|
กำหนดค่าตัวแปร unsignShort เท่ากับ 0 ซึ่งเป็นค่าที่ต่ำสุดขอบเขตข้อมูลชนิด unsigned
short
|
บรรทัดที่ 31
|
แสดงผลลัพธ์จากบรรทัดที่
30
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น 0 ซึ่งตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 32
|
กำหนดค่าตัวแปร unsignShort เท่ากับ 65535 ซึ่งเป็นค่าที่สูงสุดขอบเขตข้อมูลชนิด
unsigned short
|
บรรทัดที่ 33
|
แสดงผลลัพธ์จากบรรทัดที่
32
ออกทางจอภาพ จะเห็นได้ว่าค่าที่ได้เป็น 65535 ซึ่งตรงกับค่าที่กำหนดไว้
|
บรรทัดที่ 35
|
เป็นคำสั่งรับอักขระจากแป้นพิมพ์
ในที่นี้เพื่อกำหนดไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์เมื่อแสดงผลที่ต้องการแล้ว
|
NOTE จากตัวอย่างที่ 1
อาจจะมีโค๊ดบางคำสั่งที่ดูแล้วอาจจะยังไม่เข้าใจ
ดังนั้นจึงจะขออธิบายอย่างละเอียดในบทความตอนต่อไป
แต่ในหัวข้อนี้จะขออธิบายให้พอเข้าใจดังนี้
printf เป็นคำสั่งแสดงผลทางจอภาพ
%c เป็นการแสดงผลค่าของตัวแปรในรูปแบบตัวอักษร %d เป็นการแสดงผลค่าของตัวแปรในรูปแบบตัวเลข %f เป็นการแสดงผลค่าของตัวแปรในรูปแบบทศนิยม \n เป็นการแสดงผลให้ขึ้นบรรทัดใหม่ sizeof(dataType) เป็นฟังก์ชันที่มีอยู่ในชื่อเฮดเดอร์ไฟล์ stdio.h ใช้สำหรับหาขนาดชนิดข้อมูล |
จากตัวอย่างที่
1 ถ้าหากว่าเราไม่ได้กำหนดค่าอยู่ในขอบเขตชนิดข้อมูลนั้นๆ จะทำให้ค่าผิดพลาด
ไม่ตรงกับค่าที่เราตั้งใจจะให้เป็น
ดังนั้นในการเขียนโปรแกรมจึงควรระมัดระวังการกำหนดค่าให้กับตัวแปรเพื่อไม่ให้การทำงานของโปรแกรมเกิดข้อผิดพลาด
เราอาจจะประยุกต์ตัวอย่างที่ 1 นี้ในการทดสอบหาขนาดและขอบเขตข้อมูลจำนวนเต็มแบบอื่นๆ ได้เช่นกัน โดยการเปลี่ยนชนิดข้อมูลและเปลี่ยนค่าที่กำหนดให้กับตัวแปรต่างๆ ให้อยู่ในขอบเขตและไม่อย่ในขอบเขตชนิดข้อมูลนั้นๆ
เราอาจจะประยุกต์ตัวอย่างที่ 1 นี้ในการทดสอบหาขนาดและขอบเขตข้อมูลจำนวนเต็มแบบอื่นๆ ได้เช่นกัน โดยการเปลี่ยนชนิดข้อมูลและเปลี่ยนค่าที่กำหนดให้กับตัวแปรต่างๆ ให้อยู่ในขอบเขตและไม่อย่ในขอบเขตชนิดข้อมูลนั้นๆ
ชนิดข้อมูลแบบตัวอักษร
(Character
type)
Char (Character) เป็นชนิดข้อมูลแบบตัวอักษรตัวเดียว มีขนาด 1
ไบต์หรือ 8 บิต โดยจะกำหนดค่าให้อยู่ในเครื่องหมาย ‘ ’ ซึ่งเป็นได้ทั้งตัวอักษร (Letter)
, ตัวเลข (Digit) และสัญลักษณ์พิเศษ (Special
symbols) ลักษณะสำคัญของข้อมูลชนิดนี้คือ ไม่สามารถนำไปคำนวณได้
ตัวอย่างเช่น ตัวอักษร ‘5’ แตกต่างจากต่างจากตัวเลข 5 ดังนั้น ‘5’+3 จึงไม่สามารถประมวลผลได้ในการเขียนโปรแกรมภาษา
C
เพื่อให้เข้าใจมากขึ้นศึกษาได้จากตัวอย่างต่อไปนี้
ตัวอย่างที่ 2 เป็นการกำหนดค่าข้อมูลให้กับตัวแปรชนิดตัวอักษร เพื่อพิจารณาขอบเขตของข้อมูล
เพื่อให้เข้าใจมากขึ้นศึกษาได้จากตัวอย่างต่อไปนี้
ตัวอย่างที่ 2 เป็นการกำหนดค่าข้อมูลให้กับตัวแปรชนิดตัวอักษร เพื่อพิจารณาขอบเขตของข้อมูล
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
#include <conio.h>
void main()
{
char chTest;
printf
(" sizeof (char) = %d\n", sizeof(char));
//valid
chTest
= 'A';
printf("Char A = %c\n", chTest);
printf(" ASCII A = %d\n", chTest);
printf("\n");
//invalid
chTest
='ABC';
printf(" Char ABC = %c\n", chTest);
printf(" ASCII ABC = %d\n", chTest);
getch();
}
|
จากโค๊ดจะได้ผลลัพธ์ดังนี้
การทำงานของโปรแกรมอธิบายได้ดังนี้ครับ
บรรทัดที่ 1-2
|
เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ สังเกตได้ที่เครื่องหมาย #
โดยมีการเรียกใช้ไลบรารี stdio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับอินพุตละเอาต์พุต
และไลบรารี conio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับจอภาพทั้งหมด
|
บรรทัดที่ 4-20
|
เป็นส่วนการทำงานของฟังก์ชัน
main()
|
บรรทัดที่ 6
|
ประกาศตัวแปรชนิด char ชื่อ chTest
|
บรรทัดที่ 7
|
แสดงผลขนาดของตัวแปร
char ทางจอภาพ
|
บรรทัดที่ 10
|
กำหนดค่าตัวแปร chTest กับ ‘A’ ซึ่งเป็นการกำหนดค่าที่ถูกต้อง เนื่องจาก
ค่าข้อมูลชนิดตัวอักษรจะสามารถกำหนดค่าตัวอักษรได้เพียงตัวเดียว
|
บรรทัดที่ 11
|
แสดงผลลัพธ์จากบรรทัดที่
10
จะเห็นได้ว่าผลลัพธ์ที่ได้จะเป็นค่า A
|
บรรทัดที่ 12
|
แสดงผลลัพธ์ค่าของตัวแปรในรูปแบบ
ASCII Code
|
บรรทัดที่ 13
|
ขึ้นบรรทัดใหม่
|
บรรทัดที่ 16
|
กำหนดค่าตัวแปร char เท่ากับ ‘ABC’ ซึ่งเป็นการกำหนดค่าที่ผิด
เนื่องจากค่าข้อมูลชนิดตัวอักษรจะสามารถกำหนดค่าตัวอักษรได้เพียงตัวเดียว
|
บรรทัดที่ 17
|
แสดงผลลัพธ์จากบรรทัดที่
16
จะเห็นได้ว่าผลลัพธ์ที่ได้จะเป็นค่าตัวสุดท้ายที่ได้กำหนดให้กับตัวแปร
ซึ่งในตัวอย่างนี้จะเป็นค่า C
|
บรรทัดที่ 18
|
แสดงผลลัพธ์ค่าของตัวแปรในรูปแบบ
ASCII Code
|
บรรทัดที่ 19
|
เป็นคำสั่งรับอักขระจากแป้นพิมพ์
ในที่นี้เพื่อไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์เมื่อแสดงผลลัพธ์ที่ต้องการแล้ว
|
ชนิดข้อมูลแบบข้อความ
(String
type)
ในภาษา C จะไม่มีประเภทข้อมูล string
(ชนิดข้อมูลแบบกลุ่มของตัวอักษร)
แต่เราสามารถสร้างข้อมูลชนิดนี้ได้โดยใช้เทคนิคในเรื่องของ Array เข้ามาช่วย ซึ่งจะอธิบายในบทความตอนต่อๆไป
การกำหนดค่าข้อความให้กับตัวแปรจะอยู่ภายในเครื่องหมาย (“ ”) โดยในการสร้างต้องประกาศขนาด Array ไว้ล่วงหน้าเพื่อเป็นการจองพื้นที่สำหรับขนาดของข้อมูลชนิดข้อความ ซึ่งมีรูปแบบการประกาศและกำหนดค่าข้อมูลชนิดข้อความดังนี้
การกำหนดค่าข้อความให้กับตัวแปรจะอยู่ภายในเครื่องหมาย (“ ”) โดยในการสร้างต้องประกาศขนาด Array ไว้ล่วงหน้าเพื่อเป็นการจองพื้นที่สำหรับขนาดของข้อมูลชนิดข้อความ ซึ่งมีรูปแบบการประกาศและกำหนดค่าข้อมูลชนิดข้อความดังนี้
Char name[n] = value;
|
โดยที่ name เป็นชื่อตัวแปร
n เป็นขนาดของตัวแปร
value เป็นค่าของตัวแปร
ตัวอย่างเช่น
char chSex[5] = “Male”;
char chBoolean[6] = “False”;
|
เพื่อให้เข้าใจการใช้งานชนิดข้อมูลแบบข้อความมากขึ้น เราจะมาศึกษาได้จากตัวอย่างต่อไปนี้
ตัวอย่างที่ 3 เป็นตัวอย่างการกำหนดค่าของข้อมูลให้กับตัวแปรชนิดข้อความเพื่อพิจารณาขอบเขตของข้อมูล ซึ่งมีโค๊ดดังนี้
1
2
3
4
5
6
7
8
9
10
11
|
#include
<stdio.h>
#include
<conio.h>
void main()
{
char strTest[30] = "Developer
Web and Programming";
printf(" String : %s\n", strTest);
printf(" Index 6 : %c\n", strTest[6]);
getch();
}
|
จากโค๊ดจะได้ผลลัพธ์ดังนี้
การทำงานของโปรแกรมอธิบายได้ดังนี้ครับ
บรรทัดที่ 1-2
|
เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ สังเกตได้ที่เครื่องหมาย #
โดยมีการเรียกใช้ไลบรารี stdio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับอินพุตละเอาต์พุต
และไลบรารี conio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับจอภาพทั้งหมด
|
บรรทัดที่ 4-11
|
เป็นส่วนการทำงานของฟังก์ชัน
main()
|
บรรทัดที่ 6
|
ประกาศตัวแปรชนิดข้อความชื่อ
strTest พร้อมกำหนดค่าเท่ากับ ” Developer Web and
Programming”
|
บรรทัดที่ 8
|
แสดงผลลัพธ์ค่าตัวแปร
strTest ทางจอภาพ
|
บรรทัดที่ 9
|
แสดงผลลัพธ์ค่าตัวแปร
strTest ในตำแหน่งที่ 6 ทางจอภาพ ซึ่งในภาษา C จะนับตำแหน่ง Index โดยเริ่มต้นที่ 0
|
บรรทัดที่ 10
|
เป็นคำสั่งรับอักขระจากแป้นพิมพ์
ในที่นี้เพื่อไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์เมื่อแสดงผลลัพธ์ที่ต้องการแล้ว
|
ข้อมูลแบบจำนวนเลขทศนิยม
(Floating
point type)
Floating point
เป็นชนิดข้อมูลแบบตัวเลขทศนิยมที่สามารถนำไปคำนวณทางคณิตศาสตร์ได้
ซึ่งอาจมีจุดทศนิยมหรือไม่มีจุดทศนิยมก็ได้ โดยสามารถเขียนในรูปแบบดังนี้
- เลขทศนิยม เช่น 12.568, -13.5
- เลขทศนิยมแบบยกกำลัง เช่น 2.004E + 5, 9.40956E -– 25
ซึ่ง 2.004E + 5 ก็คือ 1.004 x 105
ส่วน 9.40956E – 25 ก็คือ 4.10956 x 10-25
- เลขทศนิยม เช่น 12.568, -13.5
- เลขทศนิยมแบบยกกำลัง เช่น 2.004E + 5, 9.40956E -– 25
ซึ่ง 2.004E + 5 ก็คือ 1.004 x 105
ส่วน 9.40956E – 25 ก็คือ 4.10956 x 10-25
ชนิดข้อมูลแบบจำนวนเลขทศนิยมในภาษา
C
มีด้วยกัน 3 ชนิด
ดังตารางแสดงชนิดและขอบเขตข้อมูลด้านล่าง
ชนิดข้อมูล
|
ขนาด (ไบต์)
|
ช่วงข้อมูล
|
float
|
4
|
3.4
x 10-38 ถึง 3.4 x 1038
|
double
|
8
|
1.7
x 10-308 ถึง 1.7 x 10308
|
long double
|
10
|
3.4
x 10-4932 ถึง 1.1 x 104932
|
จุดสังเกตจะพบว่า ชนิดข้อมูลแบบเลขทศนิยมจะเป็นแบบ signed (คิดเครื่องหมาย) เสมอ ซึ่งเราสามารถกำหนดค่าให้ตัวแปรโดยคำนึงถึงข้อกำหนดดังนี้
- จะต้องเป็นค่าตัวเลขที่สามารถมีจุดทศนิยมได้
- ห้ามใช้เครื่องหมาย , หรือช่องว่างคั่นระหว่างตัวเลข เช่น 1,234.03
- กรณีเป็นค่าบวกไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้าค่า แต่ในกรีเป็นค่าลบ ต้องใส่ เครื่องหมาย - นำหน้าเสมอ
- การเขียนในรูปแบบใช้อักษรตัว E ค่าที่ถูกกำหนดสามารถกำหนดได้ทั้งค่าบวกและค่าลบ
- สามารถใช้เครื่องหมาย Suffix ต่อท้ายค่าที่กำหนดให้ตัวแปรได้ โดยใช้ L ต่อท้ายชนิดข้อมูล long double หรือ F ต่อท้ายค่าที่เป็น double (ใช้ตัวพิมพ์ใหญ่หรือเล็กความหมายเหมือนกันนะครับ^^)
ตัวอย่างเช่น
testFloat = 654.6; //
float
testDouble = 13.31F; // double testLongDouble = 16.34L // long double |
ตัวอย่างที่ 4 เป็นตัวอย่างการคำนวณค่าข้อมูลให้กับตัวแปรชนิดเลขทศนิยม
เพื่อหาพื้นที่สี่เหลียมผืนผ้า มีโค๊ดดังนี้ครับ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
#include <conio.h>
void main()
{
float fWidth = 1000.25;
float fLength = 5010.5;
float fArea;
fArea
= fWidth * fLength;
printf("This is Width = %f \n", fWidth);
printf("This is Length = %f \n", fLength);
printf("Rectangular area is = %f \n", fArea);
getch();
}
|
จากโค๊ดจะได้ผลดังนี้
การทำงานของโปรแกรมอธิบายได้ดังนี้ครับ
บรรทัดที่ 1-2
|
เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ สังเกตได้ที่เครื่องหมาย #
โดยมีการเรียกใช้ไลบรารี stdio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับอินพุตละเอาต์พุต
และไลบรารี conio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับจอภาพทั้งหมด
|
บรรทัดที่ 4-15
|
เป็นส่วนการทำงานของฟังก์ชัน
main()
|
บรรทัดที่ 6
|
ประกาศตัวแปรเลขทศนิยมชื่อ
fWidth เพื่อเก็บค่าความกว้างของ สี่เหลี่ยมผืนผ้า พร้อมกำหนดค่าเท่ากับ 1000.25
|
บรรทัดที่ 7
|
ประกาศตัวแปรชนิดเลขทศนิยมชื่อ
fLength เพื่อเก็บค่าความยาวของสี่เหลี่ยมผืนผ้า พร้อมกำหนดค่าเท่ากับ 5010.5
|
บรรทัดที่ 8
|
ประกาศตัวแปรชนิดเลขทศนิยมชื่อ
fArea เป็น float เพื่อเก็บค่าสี่เหลี่ยมผืนผ้า
|
บรรทัดที่ 10
|
คำนวณหาพื้นที่สี่เหลี่ยมผืนผ้า
และนำผลที่ได้เก็บไว้ในตัวแปร fArea
|
บรรทัดที่ 12-14
|
แสดงผลค่าตัวแปร fWidth, fLength และ fArea ทางจอภาพตามลำดับ
|
บรรทัดที่ 16
|
เป็นคำสั่งรับอักขระจากแป้นพิมพ์
ในที่นี้เพื่อไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์เมื่อแสดงผลลัพธ์ที่ต้องการแล้ว
|
ตัวอย่างที่
5 เป็นตัวอย่างการกำหนดค่าข้อมูลให้กับตัวแปรเลขทศนิยม
เพื่อหาพื้นที่สามเหลี่ยม
ซึ่งมีโค๊ดดังนี้
ซึ่งมีโค๊ดดังนี้
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
#include <conio.h>
void main()
{
double fHeigth = 5010.5;
double fBase = 500.25;
double fArea;
fArea
= 0.5 * fHeigth * fBase;
printf("This is Heigth = %f \n", fHeigth);
printf("This is Base = %f \n", fBase);
printf("Triangle area is = %f \n", fArea);
getch();
}
|
จากโค๊ดจะได้ผลดังนี้
การทำงานของโปรแกรมอธิบายได้ดังนี้ครับ
บรรทัดที่ 1-2
|
เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ สังเกตได้ที่เครื่องหมาย #
โดยมีการเรียกใช้ไลบรารี stdio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับอินพุตละเอาต์พุต
และไลบรารี conio.h ซึ่งเป็นไลบรารีจัดการเกี่ยวกับจอภาพทั้งหมด
|
บรรทัดที่ 4-15
|
เป็นส่วนการทำงานของฟังก์ชัน
main()
|
บรรทัดที่ 6
|
ประกาศตัวแปรเลขทศนิยมชื่อ
fHrigth เพื่อเก็บค่าความกว้างของ สี่เหลี่ยมผืนผ้า พร้อมกำหนดค่าเท่ากับ 5010.5
|
บรรทัดที่ 7
|
ประกาศตัวแปรชนิดเลขทศนิยมชื่อ
fBase เพื่อเก็บค่าความยาวของสี่เหลี่ยมผืนผ้า พร้อมกำหนดค่าเท่ากับ 500.25
|
บรรทัดที่ 8
|
ประกาศตัวแปรชนิดเลขทศนิยมชื่อ
fArea เป็น float เพื่อเก็บค่าสี่เหลี่ยมผืนผ้า
|
บรรทัดที่ 10
|
คำนวณหาพื้นที่สี่เหลี่ยมผืนผ้า
และนำผลที่ได้เก็บไว้ในตัวแปร fArea
|
บรรทัดที่ 12-14
|
แสดงผลค่าตัวแปร fHeigth, fBase และ fArea ทางจอภาพตามลำดับ
|
บรรทัดที่ 16
|
เป็นคำสั่งรับอักขระจากแป้นพิมพ์
ในที่นี้เพื่อไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์เมื่อแสดงผลลัพธ์ที่ต้องการแล้ว
|
แสดงความคิดเห็น