ตัวแปรและประเภทข้อมูล
27 June 2015
ในบทเรียนนี้ เราจะพูดเกี่ยวกับตัวแปรในภาษา C ตัวแปรเป็นสถานที่สำหรับเก็บข้อมูลในหน่วยความจำ โดยมีชื่อของตัวแปรเพื่อใช้อ้างถึงข้อมูล (Identifier) ตัวแปรถูกใช้เพื่อเก็บค่า เราสามารถสร้างตัวแปรได้เป็นจำนวนมากโดยมีชื่อที่แตกต่างกัน รูปแบบของการประกาศตัวแปรในภาษา C คือ:
type identifier; type identifier = value;type เป็นประเภทของข้อมูลที่จะเก็บในตัวแปร identifier เป็นที่รู้จักกันในในชื่อของตัวแปร เราใช้ชื่อนี้เพื่ออ้างถึงค่าที่ตัวแปรนั้นเก็บอยู่ values เป็นทางเลือกที่คุณสามารถกำหนดค่าให้กับตัวแปรเมื่อมันถูกสร้าง หรือกำหนดในภายหลังได้ มาดูตัวอย่าง
int a; float b; char c = 'A';ในตัวอย่างเรามีตัวแปร 3 ตัว ตัวแรกประเภทของมันคือ int และมีชื่อว่า a มันใช้เพื่อเก็บค่าเลขจำนวนเต็ม (Integer) และเรายังไม่ได้กำหนดค่าใดๆ ให้มัน ดังนั้นค่าเริ่มต้นของตัวแปรเมื่อถูกสร้างขึ้นจะเป็น NULL ตัวแปรที่สองมีประเภทเป็น float ตัวแปรนี้จะถูกใช้เพื่อเก็บค่าของจำนวนจริง และตัวแปรที่สามมีประเภทเป็น char มันถูกใช้เพื่อเก็บสัญลักษณ์หนึ่งตัวใน ASCII code และเรากำหนด 'A' เป็นค่าเริ่มต้นให้กับมัน
ประเภทข้อมูล
ในภาษา C มีประเภทข้อมูลชนิดต่างๆ ที่ให้เราสามารถใช้เพื่อชนิดการกับข้อมูลต่างประเภทกัน เช่น Boolean, Number, Character และ Object เป็นต้น
ตารางข้างล่างนี้แสดงประเภทข้อมูลทั้งหมดในภาษา C
char | 1 byte | -128 to 127 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 4 byte | -2,147,483,648 to 2,147,483,647 |
unsigned int | 4 byte | 0 to 4,294,967,295 |
short | 2 byte | -32,768 to 32,767 |
unsigned short | 2 byte | 0 to 65,535 |
long | 4 byte | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 byte | 0 to 4,294,967,295 |
float | 4 byte | 1.2E-38 to 3.4E+38 |
double | 8 byte | 2.3E-308 to 1.7E+308 |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 |
bool | 1 bit | 0 to 1 |
การประกาศตัวแปร
ตอนนี้เราจะมาเรียนวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรกับตัวอย่างง่ายๆ
#include <stdio.h> int main() { int a = 5; int b; b = 10; int c = a + b; printf("Value of c is %d", c); return 0; }ในตัวอย่าง เราได้สร้างตัวแปรสามตัวคือ a, b และ c ที่มีชนิดข้อมูลเป็น int และเรารวมค่าของ a และ b แล้วเก็บไว้ในตัวแปร c ข้างล่างนี้เป็นผลลัพธ์ของโปรแกรม
Value of c is 15อย่างไรก็ตาม คุณสามารถประกาศชนิดข้อมูลอื่นได้ ซึ่งมันไม่อยากเกินไป มาดูตัวอย่างเพิ่มเติม
#include <stdio.h> int main() { float PI = 3.14; int r; scanf("Enter circle radius %d", &r); double result = 2 * PI * r; printf("Area is %f", result ); return 0; }ในตัวอย่าง แสดงให้คุณเห็นการใช้ตัวแปรประเภทต่างๆ ในภาษา C นั้นมีข้อมูลประเภทต่างๆ ที่ให้เราสามารถจัดการกับข้อมูลที่แตกต่างกันออกไป เช่น ตัวเลขจำนวนเต็ม ตัวเลขจำนวนจริง หรือข้อมูลแบบตัวอักษร ซึ่งข้อมูลแต่ละประเภทมีรูปแบบการใช้งานและขนาดของข้อมูลที่แตกต่างกัน ดังแสดงในตารางก่อนหน้า ต่อไปเราจะอธิบายและแสดงตัวอย่างของการใช้ข้อมูลประเภทต่างๆ ในภาษา C สำหรับเขียนโปรแกรม
Boolean
Boolean เป็นประเภทข้อมูลที่มีได้เพียงสองค่าคือจริง true และเท็จ false ซึ่งเป็นประเภทของตัวแปรสำหรับเก็บค่าที่เป็นไปได้เพียงสองค่า เช่น กลางวันและกลางคืน สีขาวและสีดำ ร้อนและหนาว เป็นต้น ข้อมูลประเภทนี้มักจะใช้สำหรับสร้าง Expression สำหรับเงื่อนไขการทำงานของโปรแกรม ในภาษา C ค่าของ Boolean นั้นใช้ 1 หรือ true สำหรับค่าที่เป็นจริงและ 0 หรือ false สำหรับค่าที่เป็นเท็จ มาดูตัวอย่างการใช้งาน
#include <stdio.h> #include <stdbool.h> int main () { bool gender = 1; bool open = 0; if (gender) { printf("This is the boy.\n"); } else { printf("This is the girl.\n"); } if (open) { printf("The door is open.\n"); } else { printf("The door is not open.\n"); } return 0; }ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Boolean ในภาษา C ในตัวแปร gender เราได้กำหนดตัวแปรให้หมายถึงเพศ ถ้าในตัวแปรนั้นมีค่าเป็นจริงจะหมายถึงเป็นผู้ชาย และถ้ามีค่าเป็นเท็จจะหมายถึงเป็นผู้หญิง และตัวแปร open ใช้สำหรับเก็บสถานะการเปิดและปิดของประตู เมื่อตัวแปรมีค่าเป็นจริงจะหมายถึงประตูถูกเปิดอยู่ และเมื่อค่าในตัวแปรเป็นเท็จก็หมายความว่าประตูนั้นไม่ได้เปิด
ในคอมไพเลอร์ของภาษา C ในปัจจุบันนั้น ข้อมูลประเภท bool นั้นถูกนำออกแล้ว ดังนั้นเพื่อใช้ข้อมูลประเภทนี้ เราต้องทำเข้าไลบรารี่จาก stdbool.h สำหรับการใช้งาน และคอมไพลเลอร์ของคุณสนับสนุนเวอร์ชัน C99 ด้วย อย่างไรก็ตามมีหลายวิธีที่จะ Implement ข้อมูลประเภท bool ถ้าหากคุณใช้บ่อยๆ ในโปรแกรม หรือสามารถใช้ข้อมูลประเภท Integer แทนได้
Char ตัวอักษร
Char เป็นประเภทข้อมูลที่ใช้สำหรับเก็บตัวอักษรจำนวนหนึ่งตัวอักษรใน ASCII ภาษา C นั้นยังไม่ได้สนับสนุนการเก็บข้อมูลแบบ String แต่คุณสามารถทำแบบนั้นได้ โดยการใช้ Char array เพื่อเก็บตัวอักษรที่ต่อกันหลายตัว มาดูตัวอย่างการใช้งานตัวแปรประเภท char ในภาษา C
#include <stdio.h> int main() { char n = 'A'; printf("%c\n", n); printf("%d\n", n); char *name = "marcuscode"; printf("%s", name); char extension[] = ".com"; printf("%s", extension); return 0; }ในตัวอย่าง เป็นการประกาศตัวแปรประเภท char โดยการเก็บตัวอักษร 'A' ตัวอักษรทุกตัวนั้นมีรหัส ASCII ของมันในฐาน 10 ในภาษา C นั้นข้อมูลประเภท Char และ Integer สามารถแปลงค่าได้โดยวิธี implicit และ Explicit type casting ยกตัวอย่างเช่น เมื่อเราต้องการค่าที่หมายถึง A และสามารถใช้ 65 แทนได้ดังตัวอย่างข้างล่าง
char a = 65; // A int b = 'A'; // 65เราสามารถเก็บตัวอักษรที่มากกว่าหนึ่งตัวอักษรได้ โดยเราเรียกว่าอาเรย์ หรือ Array of char ซึ่งสามารถสร้างได้ทั้งในรูปแบบของอาเรย์ปกติและพอยน์เตอร์ นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้งานข้อมูลประเภท Char และ Char อาเรย์
A 65 marcuscode.comInteger ตัวเลขจำนวนเต็ม
Integer เป็นประเภทข้อมูลแบบจำนวนเต็ม ซึ่งข้อมูลแบบ Integer นั้นจะประกอบไปด้วยหลายขนาด เช่น short int และ long ซึ่งจะเก็บข้อมูลในระยะที่แตกต่างกัน เรามักจะใช้ตัวแปรประเภท Integer สำหรับเก็บข้อมูลที่นับได้ เช่น จำนวนของผลไม้ในตระกร้า จำนวนของคนในห้อง จำนวนของรถที่วิ่งบนท้องถนน เป็นต้น มาดูตัวอย่างการใช้งานตัวแปรประเภท Integer ในภาษา C
#include <stdio.h> int main() { int apple = 3; int orange = 2; int total = apple + orange; printf("%d apples and %d oranges\n", apple, orange); printf("I have %d fruits in total", total); return 0; }ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Integer สำหรับเก็บจำนวนของผลไม้แต่ละชนิด และหาผลรวมของผลไม้ทั้งสองในตัวแปร total ต่อไปเราจะพูดเกี่ยวกับค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer ในภาษา C ข้างล่างนี้เป็นตัวอย่างของโปรแกรม
ในตัวอย่าง เป็นโปรแกรมในการแสดงค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer โดยใช้ค่าคงที่ INT_MAX และ INT_MIN ซึ่งเป็นค่าที่กำหนดโดย Marco ที่อยู่ในไลบรารี่ limits.h ของภาษา C และเราทดสอบการทำงานของโปรแกรมโดยการกำหนดค่ามากสุดให้กับตัวแปร a และเพิ่มค่าของตัวแปรขึ้นไป 1 ผลลัพธ์ที่ได้คือค่าในตัวแปรนั้นเกิด Overflow และเป็นที่น้อยที่สุดของ Integer ซึ่งจะได้ผลลัพธ์ตามข้างล่าง
Maximum value of int: Minimum value of int: -2147483648 -2147483648Floating-point numbers ตัวเลขจำนวนจริง
Floating-point number เป็นประเภทข้อมูลสำหรับเก็บตัวเลขจำนวนจริง ในภาษา C จะมีอยู่สองประเภทคือ float และ double สิ่งที่แตกต่างกันคือขนาดของพื้นที่ที่ใช้ในการจัดเก็บ และข้อมูลประเภท double นั้นจะเก็บจำนวนของทศนิยมได้มากกว่า ข้อมูลประเภทนี้จะใช้เก็บข้อมูลที่มีค่าเป็นเศษส่วนหรือตัวเลขที่มีเลขหลังจุดทศนิยม ยกตัวอย่างเช่น ข้อมูลการคำนวณทางวิทยาศาสตร์ เป็นต้น มาดูตัวอย่างการประกาศตัวแปรและใช้งาน
#include <stdio.h> int main() { float pi = 3.14f; float half = 3 / 2.0f; float half2 = 3 / 2; printf("Pi: %f\n", pi); printf("Half of 3: %f\n", half); printf("Half of 3: %f\n", half2); double gravity = 9.807; double earth_mass = 5.972E24; double meter = 1E-3; printf("Earth gravity: %lf m/s^2\n", gravity); printf("Earth mass: %lf kg\n", earth_mass); printf("1 centimeter: %lf meter\n", meter); return 0; }ในตัวอย่าง เป็นการใช้งานตัวแปรสำหรับเก็บข้อมูลในรูปแบบของทศนิยมทั้งตัวแปรประเภท float และ double ในส่วนแรกเราได้ประกาศตัวแปร float จำนวนสามตัวและกำหนดค่าให้กับตัวแปร ค่าของข้อมูลประเภท float นั้นจะลงท้ายด้วย f หรือ F เสมอ
float half = 3 / 2.0f; float half2 = 3 / 2;ต่อมาเป็นการทดสอบการหารตัวเลขในตัวแปร half และ half2 เพื่อให้คุณเข้าใจและเห็นความแตกต่างของสิ่งที่เกิดขึ้น การคูณหรือการหารตัวเลขในภาษา C นั้นจะได้ผลลัพธ์เป็น Integer ถ้าหากตัวเลขทั้งสองตัวนั้นเป็นประเภท Integer เหมือนในตัวแปร half2 ถ้าหากมีตัวแปรอย่างน้อยหนึ่งตัวแปรที่เป็น float หรือ double จะได้ข้อมูลเป็น float หรือ double นี่จึงเป็นสิ่งที่ต้องควรระวังในการเขียนโปรแกรม
double gravity = 9.807; double earth_mass = 5.972E24; double meter = 1E-3;สามตัวแปรต่อมาเป็นการประกาศตัวแปรประเภท double สำหรับตัวแปรทั้งสองประเภทนั้นสามารถประกาศในรูปแบบสัญกรณ์วิทยาศาสตร์ได้ เช่นในตัวอย่างในตัวแปร earth_mass เป็นการกำหนดค่าแบบย่อซึ่งมีค่าเท่ากับ 5.972 x 10^24 และในตัวแปร meter นั้นมีค่าเท่ากับ 1 x 10^-3
Pi: 3.140000 Half of 3: 1.500000 Half of 3: 1.000000 Earth gravity: 9.807000 m/s^2 Earth mass: 5972000000000000300000000.000000 kg 1 centimeter: 0.001000 meterนี่เป็นผลลัพธ์ของโปรแกรมในการทำงานกับประเภทข้อมูลแบบทศนิยมในภาษา C ด้วยตัวแปรแบบ float และ double
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการประกาศและใช้งานตัวแปรในภาษา C และได้รู้จักประเภทข้อมูลชนิดต่างๆ ซึ่งใช้ในการเก็บข้อมูลที่แตกต่างกันในการเขียนโปรแกรม