ตัวแปรและประเภทข้อมูล
ทำความรู้จักกับตัวแปรในภาษา C++
ตัวแปรนั้นเป็นสิ่งที่สำคัญสำหรับในการเขียนโปรแกรมทุกภาษา มันถูกใช้เพื่อเก็บข้อมูลในหน่วยความจำและช่วยให้เราสามารถจัดการกับข้อมูลได้อย่างง่ายดาย
ยกตัวอย่างเช่น ถ้าคุณต้องการที่จะจดจำบางอย่าง คุณจะต้องเขียนมันลงไปบนสมุดบันทึกของคุณ เพราะนั่นจะทำให้คุณไม่ลืมเมื่อคุณบันทึกลงไปคุณสามารถนำมาใช้เมื่อไหร่ก็ตามที่คุณต้องการ ดังนั้นในการเขียนโปรแกรมคอมพิวเตอร์ ตัวแปรถูกนำมาใช้ในแนวคิดเดียวกัน
int a = 2;
int b = 2;
int sum = a + b;
ในตัวอย่าง เราเก็บค่า 2 ในตัวแปร a และ b เพื่อหาผลรวมของตัวแปร a และตัวแปร b เราจำเป็นต้องจดจำ 2 ไว้ใสตัวแปร a ก่อนจนกว่าเราจะมีค่าของ b และหลังจากนั้นเราได้ทำการรวมค่าของตัวแปรทั้งสองไว้ในอีกตัวแปรคือ sum
คุณจะเห็นคำว่า int ก่อนชื่อของตัวแปรซึ่ง นั่นเราเรียกว่าคำสั่งที่ใช้กำหนดประเภทของตัวแปร หรือการประกาศประเภทของตัวแปร ถ้าคุณยังไม่เข้าใจในตอนนี้ ไม่ต้องกังวล เราจะเรียนในต่อไปของบทเรียนนี้
ประเภทข้อมูล
ในภาษา C++ มีตัวแปรหลายประเภทที่ช่วยให้เราสามารถจัดการกับข้อมูลประเภทต่างๆ เช่น ฺBoolean, Number, Character, String และ Object เป็นต้น
ในภาษา C++ จะมีกลุ่มของประเภทข้อมูลอยู่ทั้งหมด 4 กลุ่ม ที่คุณสามารถนำไปประกาศตัวแปรได้
- Character types: นี่เป็นประเภทของข้อมูลที่ใช้เก็บตัวอักษรหนึ่งตัว เช่น 'a', 'b' หรือ '8'.
 - Numerical integer types: ประเภทของข้อมูลชนิดนี้ใช้สำหรับเก็บค่าของจำนวนธรรมชาติ เช่น 1 หรือ 1000 ซึ่งจะแบ่งย่อยไปตามขนาดที่ใช้เก็บ โดยปกตินั้นจะเป็นแบบ int และ long
 - Floating-point types: ประเภทของข้อมูลชนิดนี้ใช้เพื่อเก็บจำนวนจริง เช่น 1.8 100.05 หรือ -5.5
 - Boolean type: ประเภทของข้อมูลชนิดนี้สามารถเก็บค่าได้เพียงสองค่าคือ true และ false
 
ในตารางข้างล่างนี้ แสดงประเภทของตัวแปรทั้งหมดในภาษา C++
| Type | Size | Values | 
|---|---|---|
| char | 1 byte | -128 to 127 (Char) | 
| char16_t | 2 bytes | -32,768 to 32,767 (Char) | 
| char32_t | 4 bytes | -2,147,483,648 to 2,147,483,647 (Char) | 
| wchar_t | Multibytes | |
| short int | 2 bytes | -32,768 to 32,767 | 
| int | 2 bytes | -32,768 to 32,762 | 
| long int | 4 bytes | -2,147,483,648 to 2,147,483,647 | 
| long long int | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 
| unsigned char | 1 byte | 0 to 255 | 
| unsigned short int | 2 bytes | 0 to 65,535 | 
| unsigned int | 2 bytes | o to 65,535 | 
| unsigned long int | 4 bytes | 0 to 4,294,967,295 | 
| unsigned long long int | 8 bytes | 0 to 18,446,744,073,709,551,615 | 
| float | 4 bytes | 1.2E-38 to 3.4E+38 | 
| double | 8 bytes | 2.3E-308 to 1.7E+308 | 
| bool | 1 byte | 0 to 1 | 
| void | - | - | 
| decltype(nullptr) | - | - | 
การประกาศตัวแปร
ภาษา C++ เป็นภาษาที่มีรูปแบบเข้มงวดในการเขียน ตัวแปรจำเป็นต้องประกาศก่อนที่จะมีการใช้งาน นั่นหมายความว่าคอมไพเลอร์จะมีการจองหน่วยความจำที่เพียงพอสำหรับตัวแปร รูปแบบในการประกาศตัวแปรในภาษา C++ นั้นตรงไปตรงมา มาดูตัวอย่างสำหรับการประกาศตัวแปรในภาษา C++
int n;
float money;
bool t;
ในตัวอย่างเราได้ประกาศ 3 ตัวแปร ตัวแปรแรกเราประกาศตัวแปรที่มีชนิดข้อมูลเป็น int และมีชื่อของตัวแปรว่า a ตัวแปรที่สองประกาศตัวแปรที่มีชนิดข้อมูลเป็น float และมีชื่อของตัวแปรว่า money ตัวแปรที่สามนั้นเป็นประเภท boolean ที่มีชื่อว่า t เมื่อตัวแปรถูกสร้าง มันจะสามารถถูกใช้ได้ในขอบเขตของโปรแกรม หลังจากที่เราได้ประกาศตัวแปรแล้ว เราสามารถกำหนดค่าให้มันในตอนเริ่มต้น หรือในตอนที่โปรแกรมรันได้ทันที
Boolean
Boolean เป็นประเภทข้อมูลที่เก็บค่าเพียงสองค่าคือ true และ false และเป็นประเภทข้อมูลที่ใช้หน่วยความจำในการเก็บน้อยที่สุด Boolean มักจะใช้ในการเก็บข้อมูลที่มีเพียงสองสถานะ เช่น เปิดหรือปิด ใช้งานหรือไม่ใช้งาน ออนไลน์หรือออฟไลน์ เป็นต้น Boolean ใช้สำหรับคำสั่งเงื่อนไข เช่น คำสั่ง if, for หรือ while และเราสามารถสร้างสร้าง Boolean expression ที่ซับซ้อนได้โดยการใช้ตัวดำเนินการกับ Boolean นี่เป็นตัวอย่างการใช้งาน Boolean ในภาษา C++
#include <iostream>
using namespace std;
int main()
{
    bool gender = false;
    if (gender)
    {
        cout << "This is a boy." << endl;
    }
    else
    {
        cout << "This is a girl." << endl;
    }
    bool is_playing = true;
    cout << "Playing = " << is_playing << endl;
    cout << "Playing invert = " << !is_playing << endl;
    cout << "1 and True = " << (1 && true) << endl;
    cout << "True and True = " << (true && true) << endl;
    cout << "True and False = " << (true && false) << endl;
    cout << "True or True = " << (true || true) << endl;
    cout << "True or False = " << (true || false) << endl;
    return 0;
}
ในตัวอย่าง เป็นการประกาศตัวแปร Boolean นั้นจะใช้คำสั่ง bool และตามด้วยชื่อตัวแปรที่ต้องการ ในตอนแรกเราได้ประกาศตัวแปร gender ซึ่งเราได้ให้ความหมายของตัวแปรนี้ว่า ถ้าหากมีค่าเป็น true นั้นจะเป็นผู้ชาย และหากไม่ใช่คือมีค่าเป็น false จะเป็นผู้หญิง และเราใช้คำสั่ง if ในการตรวจสอบค่าของตัวแปร โดยคำสั่ง if นั้นจะใช้สำหรับการตรวจสอบ Boolean expression ที่คุณจะได้เรียนในบทต่อๆ ไป
ต่อมาเราประกาศตัวแปร is_playing สำหรับการเก็บสถานะของการเล่นและกำหนดค่าให้กับตัวแปรเป็น true ในภาษา C++ นั้นค่าของ true จะแสดงเป็น 1 และค่าของ false จะแสดงเป็น 0 นั่นหมายความว่าคุณสามารถใช้งานค่าเหล่านี้ทดแทนกันได้ในการเขียนโปรแกรม
ต่อมาเป็นการทดสอบค่าของ boolean ด้วยตัวดำเนินการในภาษา C++ ซึ่งถ้าหากผลลัพธ์เป็นจริงจะได้ค่าที่แสดงออกมาเป็น 1 และถ้าไม่เป็นจริงจะได้ค่าที่แสดงออกมาเป็น 0
This is a girl.
Playing = 1
Playing invert = 0
1 and True = 1
True and True = 1
True and False = 0
True or True = 1
True or False = 1
นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการประกาศและใช้งานข้อมูลประเภท boolean ในภาษา C++
Char
Char คือประเภทข้อมูลที่เก็บและแสดงข้อมูลในรูปแบบตัวอักษร ASCII ซึ่งมีจำนวนทั้งสิ้น 256 ตัวในภาษา C++ ค่าของ char นั้นสามารถเป็นได้ตั้งแต่ 0 - 255 ใน integer และในการแสดงผลจะแสดงเป็นรหัสของตัวอักษร ซึ่งตัวอักษรทุกตัวมีรหัส ASCII มัน char นั้นมีหลายขนาด เช่น char16_t, char32_t เป็นประเภทของ char ที่เก็บข้อมูลได้มากกว่า แต่โดยปกติแล้วเรามักจะใช้ char ในการเขียนโปรแกรม นี่เป็นตัวอย่างการใช้งาน Char ในภาษา C++
#include <iostream>
using namespace std;
int main()
{
    char ch = 'A';
    char ch2 = '1';
    char ch3 = ' ';
    char ch4 = 97;
    char ch5 = 97 + 10;
    cout << ch << " = " << (int) ch << endl;
    cout << ch2 << " = " << (int) ch2 << endl;
    cout << ch3 << " = " << (int) ch3 << endl;
    cout << ch4 << " = " << (int) ch4 << endl;
    cout << ch5 << " = " << (int) ch5 << endl;
    cout << "a < b = " << ('a' < 'b') << endl;
    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท char ซึ่งเราได้ประกาศค่าให้กับตัวแปรทั้งหมด โดยค่าของ char นั้นเป็นตัวอักษรในใดๆ ใน ASCII และจะต้องมีเครื่องหมาย single quote (') ล้อมรอบอยู่ อย่างที่เราได้บอกว่า Char นั้นจะมีรหัสใน Integer ดังนั้นในสองตัวแปรสุดท้ายเราจึงกำหนดค่าแบบ Integer ให้กับตัวแปร
หลังจากนั้นเราได้แสดงผลค่าของตัวแปรทั้ง 5 ตัวและค่า Integer ASCII ของมันโดยการใช้วิธี Type casting จากข้อมูลประเภท Char เป็น Integer และในคำสั่งสุดท้ายเป็นการใช้ตัวดำเนินการเปรียบเทียบค่าของ Char
A = 65
1 = 49
  = 32
a = 97
k = 107
a < b = 1
นี่เป็นผลลัพธ์การทำงานของโปรแกรมในการใช้ประกาศและใช้งานข้อมูลประเภท char ในภาษา C++
Integer
Integer คือประเภทข้อมูลแบบจำนวนเต็ม มันมักจะถูกใช้สำหรับเก็บข้อมูลที่ไม่มีทศนิยม เช่น จำนวนของผลไม้ คะแนนของผู้เล่นเกม จำนวนลูกกระสุนถูกยิงออกไป เป็นต้น ในภาษา C++ นั้นข้อมูลประเภท Integer มีหลายประเภท เช่น short int หรือ ซึ่งมีขนาดของการเก็บที่แตกต่างกันออกไป และคำสั่ง unsigned ใช้สำหรับประกาศตัวแปรที่เก็บเพียงจำนวนเต็มบวก นี่เป็นตัวอย่างของการใช้งานข้อมูลประเภท Integer ในภาษา C++
#include <iostream>
using namespace std;
int main()
{
    // using integer
    int apple = 3;
    int orange = 5;
    int total = apple + orange;
    cout << "Total fruit = " << total << endl;
    // using short, smaller size
    short day, month, year;
    day = 9;
    month = 3;
    year = 2017;
    cout << "Date: " << month << "/" << day << "/" << year << endl;
    // using unsigned, store only positive values
    unsigned int heght = 8848;
    cout << "The Mount Everest has " << heght << " height." << endl;
    // overflow
    int max_int  = 2147483647;
    cout << max_int << endl;
    max_int++;
    cout << max_int << endl;
    return 0;
}
ในตัวอย่าง เป็นการใช้งานข้อมูลประเภท Integer ในสถานการณ์ต่างๆ ในตอนแรกเราประกาศตัวแปรประเภท int สำหรับเก็บจำนวนผลไม้ และนำมาบวกกันแล้วเก็บไว้ในตัวแปร total และแสดงผลออกทางหน้าจอ หลังจากนั้นเป็นการใช้ตัวแปรประเภท short ซึ่งเก็บข้อมูลได้น้อยกว่า int เนื่องจากค่าที่เราต้องการเก็บนั้นเป็นค่าของวันเดือนปี ที่มีค่าไม่มากกว่าค่าของ short อยู่แล้ว มันจึงสำคัญที่คุณจะตระหนักถึงในการเลือกใช้ประเภทข้อมูลที่ประหยัดหน่วยความจำมากที่สุด
// using unsigned, store only positive values
unsigned int heght = 8848;
cout << "The Mount Everest has " << heght << " height." << endl;
// overflow
int max_int  = 2147483647;
cout << max_int << endl;
max_int++;
cout << max_int << endl;
ต่อมาเป็นการใช้งานคำสั่ง unsigned สำหรับเก็บตัวเลขค่าบวกเท่านั้น และเราได้ใช้เก็บความสูงของภูเขาเพราะว่าเราทราบว่าความสูงนั้นไม่มีทางเป็นลบแน่นอน และสุดท้ายเป็นการทดสอบการเกิด Overflow ของตัวแปร เราได้กำหนดค่าสูงสุดที่ข้อมูลประเภท int จะเก็บได้ลงในตัวแปร max_int และพยายามเพิ่มค่าตัวแปรไปอีก 1 ผลลัพธ์ที่ได้คือค่าในตัวแปรจะเกิดการ Overflow ไปเป็นค่าต่ำสุดของมัน ดังนั้นคุณควรจะระวังในการเขียนโปรแกรม ถ้าหากข้อมูลของคุณมีขนาดใหญ่มากๆ คุณควรจะเลือกใช้ประเภทข้อมูลให้เพียงพอเป็นต้น ดังนั้นในตัวอย่างเราสามารถใช้ข้อมูลประเภท long ที่สามารถเก็บข้อมูลได้มากกว่า int
Total fruit = 8
Date: 3/9/2017
The Mount Everest has 8848 height.
2147483647
-2147483648
นี่เป็นผลลัพธ์การทำงานของโปรแกรมของตัวอย่างการใช้ Integer ในภาษา C++
Floating-point number
Floating-point number ใช้สำหรับเก็บข้อมูลตัวเลขแบบจำนวนจริงหรือตัวเลขที่มีทศนิยม ในภาษา C++ นั้นจะมีสองปะเภทคือ float และ double ซึ่งข้อมูลแบบ float นั้นมีขนาดเล็กกว่าและเก็บตัวเลขหลังจุดได้ 8 ตัว ในขณะที่ double นั้นสามารถเก็บได้ 16 ตัว ดังนั้นมันจึงถูกใช้กับข้อมูลที่มีความละเอียดของตัวเลขมาก เช่น ข้อมูลการคำนวณทางวิทยาศาสตร์ เป็นต้น มาดูตัวอย่างการใช้งานในภาษา C++
#include <iostream>
using namespace std;
int main()
{
    float a = 2.42f;
    float b = -3.8f;
    float c = 1.58e3f;
    float d = -4.934e-6f;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;
    cout << "d = " << d << endl;
    double e = 102.34;
    double f = 10.0 / 2.0;
    cout << "d + e = " << (e + f) << endl;
    return 0;
}
ในตัวอย่าง เป็นการใช้งานตัวแปรประเภท Floating-point number ใน 4 ตัวแปรแรกเป็นการใช้งานตัวแปรประเภท float ซึ่งในการกำหนดค่าให้กับตัวแปรนั้นต้องลงท้ายด้วย f เสมอ ส่วนข้อมูลประเภท double นั้นไม่ต้อง
float c = 1.58e3f;
float d = -4.934e-6f;
ในการกำหนดค่าให้กับตัวแปรนั้นสามารถกำหนดในรูปแบบย่อหรือสัญกรณ์วิทยาศาสตร์โดยการใช้เครื่องหมาย e เช่น ในตัวแปร c นั้นจะหมายถึง 1.58 x 10 ^ 3 และในตัวแปร d นั้นจะหมายถึง -4.934 x 10 ^ -6 และถ้าหากตัวเลขนั้นมีค่าใหญ่มากหรือน้อยมาก ภาษา C++ จะแสดงในรูปแบบย่ออัตโนมัติ
a = 2.42
b = -3.8
c = 1580
d = -4.934e-006
d + e = 107.34
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
Strings
String เป็นตัวอักษรที่เรียงต่อกันที่ถูกแสดงในรูปแบบอาเรย์ของตัวอักษร แต่ String ในภาษา C++ เป็นออบเจ็คของคลาสที่มากับ C++ ไลบรารี่ ในการที่จะใช้ String เราจำเป็นต้องนำเข้าไลบรารี่ของ String โดยใช้คำสั่ง #include <string> ข้อมูลประเภทสตริงนั้นจะเก็บข้อมูลในรูปแบบของคำหรือประโยค ที่เป็นตัวอย่างเพื่อใช้ String ในภาษา C++
// string example
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string name = "Mateo";
    cout << "My name is " << name;
    return 0;
}
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับประเภทข้อมูลและตัวแปรในภาษา C++ เราได้พูดถึงความหมายของตัวแปร และแสดงตัวอย่างการประกาศตัวแปร และอธิบายถึงความแตกต่างของข้อมูลประเภทต่างๆ ในการใช้งานให้เหมาะสมในการเขียนโปรแกรม ซึ่งเป็นสิ่งสำคัญที่คุณควรจะตระหนักถึงในการเลือกใช้ประเภทของข้อมูลให้เหมาะสมในการเขียนโปรแกรมเพื่อลดการใช้งานหน่วยความจำ ซึ่งจะทำให้โปรแกรมของคุณมีประสิทธิภาพมากขึ้น