Skip to content

ตัวแปร ชนิดข้อมูล และตัวดำเนินการ

Author: Pakin Olanraktham & njoop


ตัวแปรคืออะไร

ตัวแปร คือสิ่งที่เราใช้ในการเก็บข้อมูล ซึ่งจะมี ชื่อตัวแปร และ ชนิดของข้อมูล กำหนดไว้ จะคล้ายๆ กับตัวแปรทางคณิตศาสตร์ เช่น \(x = 5, y = 3\) โดยจะมีวิธีการประกาศตัวแปรดังนี้

ชนดขอม ื่อตวแปร = าของขอม;

เช่น

int age = 20; // ค่าของตัวแปรชื่อ age เป็น 20

ชนิดข้อมูลพื้นฐานในภาษา C++

ชนิดข้อมูล คำอธิบาย หน่วยความจำที่ใช้ ตัวอย่าง
int จำนวนเต็ม ตั้งแต่ \(-2^{31}\) ถึง \(2^{31} - 1\) 4 bytes int age = 15;
long long จำนวนเต็ม ตั้งแต่ \(-2^{63}\) ถึง \(2^{63} - 1\) 8 bytes long long speed = 3000000000;
float ทศนิยมความละเอียด 6-7 หลัก 4 bytes float pi = 3.14;
double ทศนิยมความละเอียด 16-17 หลัก 8 bytes double price = 99.99;
char ตัวอักษร 1 ตัว 1 byte char grade = 'A';
bool ค่าความจริง มี 2 สถานะคือ จริง (1 / true) หรือ เท็จ (0 / false) 1 byte bool x = true;

สามารถศึกษาเพิ่มเติมได้ที่ GeeksforGeeks

ขนาดข้อมูล

หากคุณลองสังเกต ในหนังสือหรือสไลด์ค่ายสอวน. เก่าๆ จะเขียนว่า int เก็บได้ตั้งแต่ \(-2^{15}\) ถึง \(2^{15}-1\) (นั่นก็คือ int เป็น 16 bit)

ค่าของ int นั้น ขึ้นอยู่กับคอมไพล์เลอร์ที่ใช้ ซึ่งในสมัยก่อน นิยมใช้ int เป็น 16 bit แต่ในปัจจุบัน ส่วนใหญ่ใช้ 32 bit

เราสามารถใช้คำสั่ง sizeof ในการตรวจสอบขนาดของตัวแปรได้

ข้อควรระวัง

float และ double เป็นเพียงแค่การประมาณค่าเท่านั้น ดังนั้นค่าอาจไม่แม่นยำ หรือสูญหาย จึงไม่ควรใช้ถ้าหากอยากเก็บทศนิยมที่มีความละเอียดมากขึ้น

เพื่อเป็นตัวอย่าง สามารถรันโค้ดดังต่อไปนี้

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    float a = 0.1;
    cout << fixed << setprecision(10) << a; // ให้แสดงผลทศนิยม 10 หลักของตัวแปร a
}

จะได้ผลลัพธ์ดังนี้

0.1000000015

ตัวดำเนินการ (operator)

ตัวดำเนินการ เป็นสิ่งที่สามารถใช้ในการทำงานกับตัวแปรต่างๆ เพื่อให้ได้ผลลัพธ์ใหม่

ตัวดำเนินการกำหนดค่า

ถ้าเกิดตัวแปรมีค่าอยู่ แล้วทำการให้ค่าซ้ำ ค่าใหม่ที่ให้จะไปแทนค่าเก่า เช่น

int age = 20;
age = 15; // ค่า age จะมีค่าเป็น 15 แทน

โจทย์ตัวอย่าง

เรามีค่าในตัวแปร x และ y เป็นชนิด int ต้องการสลับค่าสองค่านี้ เช่น สมมติ x = 3, y = 5 เราต้องการให้หลังจากสลับค่าได้เป็น x = 5, y = 3 สามารถทำได้อย่างไร

เฉลย

วิธีที่ผิด:

x = y;
y = x;
ลองมาดูว่าเกิดอะไรขึ้น สมมติให้ตอนแรก x=3 และ y=5

บรรทัดแรก x = y; หลังจากคำสั่งนี้ จะได้ว่า x=5 และ y=5

บรรทัดต่อมาy = x; หลังจากคำสั่งนี้ จะได้ว่า x=5 และ y=5

ซึ่งไม่ใช่สิ่งที่เราต้องการ

สังเกตว่าค่า 3 ของตัวแปร x เดิมนั่นหายไป

วิธีที่ถูกต้อง: เก็บตัวแปรชั่วคราว มาเก็บค่า x ไว้ก่อน สมมติให้ตัวแปรนี้มีชื่อว่า z

int z;
z = x;
x = y;
y = z;

บรรทัดแรก int z; เป็นการประกาศตัวแปร จะได้ว่า x=3 และ y=5

บรรทัดที่สอง z = x หลังจากคำสั่งนี้ จะได้ว่า z=3 x=3 และ y=5

บรรทัดที่สาม x = y หลังจากคำสั่งนี้ จะได้ว่า z=3 x=5 และ y=5

บรรทัดสุดท้าย z = x หลังจากคำสั่งนี้ จะได้ว่า z=3 x=5 และ y=3

ผลลัพธ์สุดท้าย จะได้ x=5 และ y=3 ซึ่งตรงตามที่เราต้องการ

ตัวดำเนินการคณิตศาสตร์

ในภาษา C++ เราสามารถนำตัวแปรแต่ละตัวมาบวกลบคูณหาร กันได้เหมือนในคณิตศาสตร์ เช่น \(z = 3x+7(y+5)\)

มีตัวดำเนินการ ดังนี้

  • การบวก (+)
  • การลบ (-)
  • การคูณ (*)
  • การหาร (ปัดเศษ) (/)
  • เศษจากการหาร (modulo) (%)

สมมติให้ int a = 5 และ int b = 3 จะได้

การดำเนินการ ค่า
a + b \(5 + 3 = 8\)
a - b \(5 - 3 = 2\)
a * b \(5 × 3 = 15\)
a / b \(\lfloor 5/3 \rfloor\) = 1
a % b \(5\) หาร \(3\) เหลือเศษ \(2 = 2\)

ตัวดำเนินการเปรียบเทียบ

เราสามารถเปรียบเทียบตัวแปรต่างๆ เช่น จำนวนเต็ม จะให้ผลลัพธ์เป็นตัวแปรประเภท bool โดยถ้าเป็นจริง จะได้ true หรือ 1 และถ้าเป็นเท็จ จะให้ false หรือ 0

มีตัวดำเนินการ ดังนี้

  • เท่ากับ (==)
  • ไม่เท่ากับ (!=)
  • มากกว่า (>)
  • มากกว่าเท่ากับ (>=)
  • น้อยกว่า (<)
  • น้อยกว่าเท่ากับ (<=)

สมมติให้ int a = 5 และ int b = 3 จะได้

การดำเนินการ ค่าความจริง
a == b เท็จ
a != b จริง
a > b จริง
a >= b จริง
a < b เท็จ
a <= b เท็จ

ตัวดำเนินการเชิงตรรกะ

โดยตัวดำเนินการเหล่านี้ ใช้ในการรวมเงื่อนไขของหลายๆ ตัวแปร จะให้ผลลัพธ์เป็นตัวแปรประเภท bool เหมือนตัวดำเนินการเปรียบเทียบ

มีตัวดำเนินการ ดังนี้

  • และ / AND (&&): x && y จะเป็นจริงก็ต่อเมื่อทั้ง x และ y เป็นจริง
  • หรือ / OR (||): x || y จะเป็นจริงก็ต่อเมื่อ x หรือ y อย่างใดอย่างหนึ่งเป็นจริง
  • ไม่ / NOT (!): !x จะมีค่าตรงข้ามกับ x เสมอ

สมมติให้ bool x = true และ bool y = false จะได้

การดำเนินการ ค่าความจริง
x && y เท็จ
x || y จริง
!x เท็จ
!y จริง

ลำดับความสำคัญ

ซึ่งตัวดำเนินการแต่ละตัวมี ลำดับความสำคัญ โดยเรียงตามตารางดังต่อไปนี้ หากมีลำดับความสำคัญที่เท่ากัน จะทำจากซ้ายไปขวา

ลำดับ ตัวดำเนินการ ความหมาย ตัวอย่าง
1 () วงเล็บ (a + b) * c
2 *, /, % คูณ, หาร, หารเอาเศษ a * b, a / b, a % b
3 +, - บวก, ลบ a + b, a - b
4 <, <=, >, >= เปรียบเทียบตัวเลข a < b, a >= c
5 ==, != เท่ากับ, ไม่เท่ากับ a == b, a != c
6 && ตัวเชื่อม AND a && b
7 || ตัวเชื่อม OR a || b
8 = และตัวดำเนินการกำหนดค่าอื่นๆ เช่น +=, -=, *=, /=, %= การกำหนดค่า a = b, a += 1

หมายเหตุ

  • การหารเอาเศษ จะคล้ายกับ mod ในคณิตศาสตร์ เช่น 5 % 3 = 2, 7 % 10 = 7 แต่ต่างกันตรงที่ว่าหากตัวตั้งต้นติดลบ เช่น -a % b เมื่อ a เป็นจำนวนเต็มบวก จะได้ค่าออกมาเป็น -(a % b), -5 % 3 = -2
  • เราสามารถเปลี่ยนประเภทตัวแปรจากจำนวนเต็ม ไปเป็นทศนิยมได้ โดยการ (data_type) variable เช่น (float) x; ซึ่งวิธีนี้ สำคัญมากหากเราต้องการหารจำนวนเต็มสองจำนวน ให้ออกมาเป็นทศนิยม เพราะหากเศษ หรือ ส่วน ตัวใดตัวหนึ่งเป็นทศนิยม จะได้คำตอบออกมาเป็นทศนิยม เช่น ((float) x) / y;