ตัวแปรและประเภทข้อมูล

แนะนำตัวแปรในภาษา C

ในบทเรียนนี้ เราจะพูดเกี่ยวกับตัวแปรในภาษา 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

การประกาศตัวแปร

ตอนนี้เราจะมาเรียนวิธีการประกาศและกำหนดค่าเริ่มต้นให้กับตัวแปรกับตัวอย่างง่ายๆ

#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 ใช้สำหรับเก็บสถานะการเปิดและปิดของประตู เมื่อตัวแปรมีค่าเป็นจริงจะหมายถึงประตูถูกเปิดอยู่ และเมื่อค่าในตัวแปรเป็นเท็จก็หมายความว่าประตูนั้นไม่ได้เปิด 

This is the boy.

The door is not 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 = "nrpsc";

    printf("%s", name);


    char extension[] = ".ac.th";

    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

nrpsc.ac.th

Integer ตัวเลขจำนวนเต็ม

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 ข้างล่างนี้เป็นตัวอย่างของโปรแกรม 

#include <stdio.h>

#include <limits.h>


int main()

{

    printf("Maximum value of int: %d\n", INT_MAX);

    printf("Minimum  value of int: %d\n", INT_MIN);


    int a = INT_MAX;

    printf("%d\n", a);

    a = a + 1;

    printf("%d\n", a);


    return 0;

}

ในตัวอย่าง เป็นโปรแกรมในการแสดงค่ามากสุดและค่าน้อยสุดของข้อมูลประเภท Integer โดยใช้ค่าคงที่ INT_MAX และ INT_MIN ซึ่งเป็นค่าที่กำหนดโดย Marco ที่อยู่ในไลบรารี่ limits.h ของภาษา C และเราทดสอบการทำงานของโปรแกรมโดยการกำหนดค่ามากสุดให้กับตัวแปร a และเพิ่มค่าของตัวแปรขึ้นไป 1 ผลลัพธ์ที่ได้คือค่าในตัวแปรนั้นเกิด Overflow และเป็นที่น้อยที่สุดของ Integer ซึ่งจะได้ผลลัพธ์ตามข้างล่าง 

Maximum value of int: 2147483647

Minimum value of int: -2147483648

2147483647

-2147483648

Floating-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 และได้รู้จักประเภทข้อมูลชนิดต่างๆ ซึ่งใช้ในการเก็บข้อมูลที่แตกต่างกันในการเขียนโปรแกรม