

ตัวแปร (Variable) คือ การจองพื้นที่ในหน่วยความจำของคอมพิวเตอร์ สำหรับเก็บข้อมูลที่ต้องใช้ในการทำงานของโปรแกรม โดยมีการตั้งชื่อเรียกหน่วยความจำในตำแหน่งนั้นด้วย เพื่อความสะดวกในการเรียกใช้ข้อมูล ถ้าจะใช้ข้อมูลใดก็ให้เรียกผ่านชื่อของตัวแปรที่เก็บเอาไว้
กฎการตั้งชื่อตัวแปร
การตั้งชื่อตัวแปรและค่าคงที่ในภาษา C จำเป็นต้องคำนึงถึงกฎเกณฑ์ต่างๆ ดังต่อไปนี้
1. ต้องขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _(Underscore) เท่านั้น
2. ภายในชื่อตัวแปรสามารถใช้ตัวอักษร A-Z หรือ a-z หรือตัวเลข 0-9 หรือเครื่องหมาย _ ได้
3. ภายในชื่อตัวแปร ห้ามเว้นช่องว่าง หรือใช้สัญลักษณ์นอกเหนือจากข้อ 2
4. ตัวอักษรพิมพ์เล็กและตัวพิมพ์ใหญ่มีความหมายแตกต่างกัน
5. ควรตั้งชื่อตัวแปรให้สื่อความหมาย
6. สามารถตั้งชื่อได้ยาวไม่จำกัด แต่จะใช้ตัวอักษรแค่ 31 ตัวแรกในการอ้างอิง
7. ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserved Word)
คำสงวน (Reserved Word) หมายถึง คำที่สงวนไว้สำหรับเรียกใช้ตามวัตถุประสงค์ที่กำหนดโดยเฉพาะ เช่น คำที่ใช้ในคำสั่งควบคุม และชนิดของข้อมูล เป็นต้น ตัวอย่างคำสงวนของภาษาซี มีดังต่อไปนี้
auto |
default |
float |
register |
struct |
break |
do |
for |
return |
switch |
case |
double |
goto |
short |
typefef |
char |
else |
if |
signed |
union |
const |
enum |
int |
sizeof |
void |
continue |
extern |
long |
static |
white |
หากต้องการตั้งชื่อตัวแปรให้ตรงกับคำสงวน ก็สามารถทำได้โดยการนำอักษรตัวพิมพ์ใหญ่ หรือเครื่องหมาย _ เข้ามาร่วม เช่น auto เป็น Auto , int เป็น _int เป็นต้น
ตัวอย่าง ของชื่อตัวแปร ที่สามารถนำมาใช้ตั้งชื่อได้ ยกตัวอย่างเช่น
n |
month |
MONTH |
_var1 |
length |
EmpID |
days_in_year |
Do |
S001 |
first_one |
salary |
num1 |
ตัวอย่าง ของชื่อตัวแปร ที่ไม่สามารถนำมาใช้เป็นชื่อตัวแปรได้ ยกตัวอย่างเช่น
int |
do |
123num |
*variable |
float |
1 data |
การกำหนดชนิดของตัวแปร
การเขียนโปรแกรมคอมพิวเตอร์นั้น มีความจำเป็นอย่างยิ่งที่จะต้องจัดการกับข้อมูลประเภทต่าง ๆ เพื่อให้งานนั้นๆ สามารถจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพและสะดวกต่อการค้นหาข้อมูล ดังนั้นในภาษาซี จึงแบ่งประเภทของข้อมูลออกได้เป็น 6 ประเภทด้วยกันคือ
1. ข้อมูลชนิดเลขจำนวนเต็ม (Integer) คือ เลขจำนวนเต็มทั่วไป ไม่ว่าจะเป็นเลขจำนวนเต็มบวก จำนวนเต็มศูนย์และจำนวนเต็มลบ ซึ่งเลขจำนวนเต็มเหล่านี้ สามารถนำไปคำนวณได้ ตัวอย่าง เช่น 100, 56, 0, -20 เป็นต้น ซึ่งภาษาซีจะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ประเภท คือ
- short
- int
- long
2. ข้อมูลชนิดตัวเลขทศนิยม (Float) คือ เลขทศนิยมชนิดคงที่ หรืออาจจะเป็นทศนิยม แบบไม่รู้จบ หรืออาจจะเป็นเลขทศนิยมที่เขียนในรูป E (หรือ e) ยกกำลัง ตัวเลขทศนิยมเหล่านี้ สามารถนำมาใช้ในการคำนวณได้ ตัวอย่าง เลขทศนิยมนี้ได้แก่ 20.25, -0.60, 58.96, 5.40e04 เป็นต้น แบ่งออกเป็น 3 ประเภท คือ
- float
- double
- long double
3. ข้อมูลชนิดเลขฐานแปด (Octal) คือ เลขจำนวนเต็มที่ประกอบด้วยเลข 0, 1 ,2, 3, 4, 5, 6 และ 7 เมื่อนำมาใช้ในภาษาซี จะต้องเขียนเลขศูนย์นำหน้า เช่น 0123, 045 เป็นต้น ซึ่งเลขฐานแปด เหล่านี้สามารถนำมาใช้เพื่อการคำนวณได้
4. ข้อมูลชนิดเลขฐานสิบหก (Hexadecimal) คือ ตัวเลขประเภทหนึ่งที่ใช้ในระบบคอมพิวเตอร์ ซึ่งประกอบด้วย 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e และ f เวลาใช้งานในภาษาซีจะต้องเขียนด้วย 0x นำหน้าเพื่อให้รู้ว่าตัวเลขที่นำมาใช้งานนั้นเป็นฐานสิบหก
5. ข้อมูลชนิดตัวอักขระ (Character) เป็นตัวอักษรหรือสัญลักษณ์อื่น ๆ ที่มีความยาว เพียง 1 ตัวอักษรเท่านั้น ซึ่งอาจจะเป็นตัวอักษร A-Z, a-z, 0-9 หรือ #, @, $ และอื่น ๆ เป็นต้น โดยจะเขียนไว้ในเครื่องหมาย ' ' (Single Quote) ตัวอักขระทั้งหมดนั้น สามารถศึกษาหรือดู รายละเอียดเพิ่มเติมได้จากตารางรหัส ASCII 6. ข้อมูลชนิดข้อความ (String) เป็นข้อมูลแบบตัวอักษรที่มีความยาวมากกว่า 1 ตัวอักษร มาเรียงต่อกันเป็นข้อความ โดยที่ข้อความนั้นจะต้องถูกเขียนไว้ในเครื่องหมาย " " (Double Quote) ตัวอย่างเช่น "Phitsanulok", "Welcome" เป็นต้น
ตัวแปรที่ประกาศใช้งานในโปรแกรม จำเป็นต้องถูกระบุชนิดข้อมูลเพื่อให้ทราบว่าตัวแปรเหล่านั้นจัดเก็บข้อมูลชนิดใดลงไป สำหรับในภาษา C จะมีข้อมูลพื้นฐานที่นิยมใช้ คือ
ชนิดข้อมูล |
ความหมาย |
char |
ชนิดข้อมูลแบบตัวอักษร (Character) |
int |
ชนิดข้อมูลแบบเลขจำนวนเต็ม (integer) |
float |
ข้อมูลชนิดตัวเลขจำนวนจริง(ทศนิยม) (read or floating point) |
double |
ข้อมูลชนิดเลขจำนวนจริง 2 เท่า (double precision float) |
นอกจากนี้ ยังสามารถเพิ่มเครื่องหมายนำหน้าให้กับชนิดข้อมูลเหล่านี้ได้อีก
signed |
unsigned |
long |
short |
โดยรายละเอียดของชนิดข้อมูลแต่ละประเภท ดังนี้
ชนิดข้อมูล |
ความหมาย |
ขนาด (ไบต์) |
ช่วงข้อมูล |
char |
ตัวอักขระ หรือตัวอักษร |
1 |
-128 to 127 |
unsigned char |
ตัวอักขระ ไม่รวมเครื่องหมาย |
1 |
0 to 255 |
signed char |
ตัวอักขระ รวมเครื่องหมาย |
1 |
-128 to 127 |
int |
เลขจำนวนเต็ม |
2
4 |
-32,768 to 32,767
2,147,483,648 to 2,147,483,647 |
unsigned int |
เลขจำนวนเต็ม ไม่รวมเครื่องหมาย |
2
4 |
0 to 65535
0 to 4294967 |
unsigned long int |
เลขจำนวนเต็มแบบยาว ไม่รวมเครื่องหมาย |
4 |
0 to 65535
0 to 4294967 |
unsigned short int |
เลขจำนวนเต็มแบบสั้น ไม่รวมเครื่องหมาย |
2 |
0 to 65535 |
signed int |
เลขจำนวนเต็ม รวมเครื่องหมาย |
2 |
-32,768 to 32,767 |
short int |
เลขจำนวนเต็มแบบสั้น |
2 |
-32,768 to 32,767 |
long int |
เลขจำนวนเต็มแบบยาว |
4 |
2,147,483,648 to 2,147,483,647 |
signed short int |
เลขจำนวนเต็มแบบสั้น รวมเครื่องหมาย |
2 |
-32,768 to 32,767 |
signed long int |
เลขจำนวนเต็มแบบยาว รวมเครื่องหมาย |
4 |
2,147,483,648 to 2,147,483,647 |
float |
เลขจำนวนจริง มีทศนิยม |
4 |
1.2E-38 to 3.4E+38
(6 decimal places) |
doubled |
เลขจำนวนจริง 2 เท่า |
8 |
2.3E-308 to 1.7E+308
(15 decimal places) |
long doubled |
เลขจำนวนจริง 2 เท่าแบบยาว |
10 |
2.3E-4932 to 1.1E+4932
(19 decimal places) |
จากตาราง เป็นชนิดข้อมูลในภาษา C (ขนาดข้อมูลอาจไม่ตรงกัน ขึ้นอยู่กับแต่ละคอมไพเลอร์)
รูปแบบ การประกาศตัวแปร
โดยที่ data_type คือ ชนิดข้อมูล
variable_name คือ ชื่อตัวแปร
ตัวอย่าง การประกาศตัวแปร
char a; |
ประกาศตัวแปร a เก็บข้อมูลตัวอักษร 1 ตัว |
char lastname[50]; |
ประกาศตัวแปร lastname เก็บข้อความ 50 ตัว |
int num1; |
ประกาศตัวแปร num ให้มีชนิดข้อมูลเป็นเลขจำนวนเต็ม |
float total; |
ประกาศตัวแปร total ให้มีชนิดข้อมูลเป็นเลขจำนวนจริง |
การประกาศชนิดให้กับตัวแปร ควรคำนึงถึงความเหมาะสม ตัวอย่างเช่น หากต้องการใช้งานเลขจำนวนเต็มที่มีช่วงตัวเลขไม่กว้าง การเลือกใช้ short int จะเหมาะสมกว่า long int เพราะช่วยประหยัดหน่วยความจำ นอกจากนี้การสร้างสูตรคำนวณที่ประกอบไปด้วยตัวแปรชนิดข้อมูลที่ต่างกัน ตัวแปรที่ใช้เก็บผลลัพธ์จะต้องเป็นชนิดที่ใหญ่กว่าเสมอ เช่น นิพจน์ที่เป็น int มาคำนวณกับนิพจน์ที่เป็น float ตัวแปรที่ใช้เก็บผลลัพธ์ก็ต้องเป็น float
การกำหนดค่าให้กับตัวแปร
การกำหนดค่าให้กับตัวแปร จะต้องกำหนดให้เป็นไปตามกฎและต้องสัมพันธ์กับชนิดข้อมูลที่ประกาศไว้ เช่น หากกำหนดตัวแปรเป็นชนิดข้อมูล int ค่าที่กำหนดให้กับตัวแปรก็จะต้องเป็นเลขจำนวนเต็มเท่านั้น ไม่สามารถกำหนดเป็นเลขทศนิยมหรือข้อความได้
1. การกำหนดค่าชนิดเลขจำนวนเต็ม
1.ค่าตัวเลขจะต้องไม่มีทศนิยม
2.สามารถเป็นได้ทั้งค่าบวกและค่าลบ
3.สำหรับค่าบวกไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้า
4.ห้ามใช้เครื่องหมายคอมม่า , หรือช่องว่างกำกับระหว่างตัวเลข เช่น 14,560 ซึ่งถือว่าผิด
5.ช่วงค่าตัวเลขจำนวนเต็ม จะอยู่ระหว่าง -2,147,483,647 ถึง 2,147,483,647
6.สามารถใช้ Suffix ต่อท้ายค่าได้ เช่น เลขจำนวนเต็มแบบยาว ก็จะใช้อักษร L (ตัวพิมพ์เล็กหรือใหญ่ก็ได้) ต่อท้ายค่า ส่วนค่าที่เป็น unsign ก็จะใช้อักษร U ต่อท้าย และใช้ UL ต่อท้ายค่าที่เป็น unsigned long
ตัวอย่าง การกำหนดค่าให้กับตัวแปร เพื่อจัดเก็บเลขจำนวนเต็มในรูปแบบต่างๆ
n1 = 445; |
ประกาศตัวแปร a เก็บข้อมูลตัวอักษร 1 ตัว |
n2 = +557; |
ประกาศตัวแปร lastname เก็บข้อความ 50 ตัว |
n3 = -6687; |
ประกาศตัวแปร num ให้มีชนิดข้อมูลเป็นเลขจำนวนเต็ม |
n4 = 123456789L; |
ประกาศตัวแปร total ให้มีชนิดข้อมูลเป็นเลขจำนวนจริง |
n5 = 1234U; |
ชนิดข้อมูลเป็น unsigned int |
n6 = 123456789UL; |
ชนิดข้อมูลเป็น unsigned long int |
2. การกำหนดค่าให้กับตัวแปรชนิดเลขจำนวนจริง
1. ค่าตัวเลขสามารถมีจุดทศนิยมได้
2. สามารถเป็นได้ทั้งค่าบวก และลบ
3. ค่าบวกไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้า
4. สามารถกำหนดค่าแบบเอ็กซ์โปแนนต์ได้ ด้วยการใช้อักษร E ต่อท้ายค่า
5. ค่าที่ถูกกำหนอเป็นค่าเอ็กซ์โปรแนนต์ สามารถเป็นได้ทั้งค่าบวกและลบ
6. ช่วงของค่าตัวเลขชนิดจำนวนจริงเป็นไปตามชนิดข้อมูล ซึ่งอาจถูกกำหนดเป็น float, double หรือ long double
7. สำหรับค่าจำนวนจริงชนิด double จะใช้ F ต่อท้ายค่า และใช้ L ต่อท้ายค่าที่กำหนดชนิดข้อมูล เป็น long double
ตัวอย่าง การกำหนดค่าให้กับตัวแปร เพื่อจัดเก็บเลขจำนวนเต็มในรูปแบบต่างๆ
n1 = 40.9; |
ชนิดข้อมูลเป็น float |
n2 = +3.2E-5; |
ชนิดข้อมูลเป็น float exponent |
n3 = 4.3E8; |
ชนิดข้อมูลเป็น float exponent |
n4 = -0.2E+3 |
ชนิดข้อมูลเป็น float exponent |
n5 = 12.35F |
ชนิดข้อมูลเป็น double |
n6 = 12.34L; |
ชนิดข้อมูลเป็น long double |
3. การกำหนดค่าชนิดตัวอักษร
1. ค่าที่กำหนดจะต้องอักขระเพียงค่าเดียว และจะต้องอยู่ภายในเครื่องหมาย ' ' ไม่ใช่เครื่องหมาย " " ดังนั้นจึงต้องพึงระมัดระวังเป็นพิเศษด้วย
2. ขนาดจำนวนตัวอักษรสูงสุด คือ 1 ตัวอักษรเท่านั้น
3. ขนาดจำนวนตัวอักษรในภาษา C จะมองเป็น ASCII ที่ใช้แทนตัวอักขระต่างๆ เช่น ค่า 'A' จะมีค่าเท่ากับ 65 หรือค่า 'a' จะมีค่าเป็น 97

ค่าคงที่ (Constant) เป็นตัวแปรที่ไม่สามารถเปลี่ยนแปลงค่าในภายหลังได้ ค่าของตัวแปรค่าคงที่จะต้องถูกกำหนดพร้อมกับการประกาศตัวแปรเสมอ ค่าคงที่สามารถเป็นข้อมูลประเภทต่างๆ เหมือนประเภทข้อมูลพื้นฐานได้
ความแตกต่างระหว่างตัวแปรและค่าคงที่ได้แก่ ตัวแปรสามารถเปลี่ยนค่าไปมาได้ ในขณะที่ค่าคงที่หากถูกกำหนดค่าไว้แล้วจะไม่สามารถกำหนดค่าใหม่ได้ ตัวอย่างเช่น การกำหนดค่าคงที่แทนค่าของ Pi ซึ่งมีค่าโดยประมาณ 3.14159 คงไม่สะดวกแน่หากต้องพิมพ์ค่าตัวเลขนี้ลงไปทุกครั้งที่มีการอ้างถึง ดังนั้นในภาษา C จึงได้ประกาศค่าคงที่ขึ้นมาใช้งาน โดยต้องทำการนิยามและประกาศชื่อของตัวแทนค่าเหล่านั้น
ค่าคงที่แบ่งออกเป็น 3 ประเภท คือ 1) Literal constant 2) Defined constant 3) Memory constant
1. ค่าคงที่ที่นำมาแสดงผลโดยตรง (Literal constant )
เป็นค่าคงที่ ที่ถูกสั่งพิมพ์โดยตรง (ค่าตัวเลขหรือข้อความ) โดยไม่ได้นำค่าเหล่านั้นจัดเก็บไว้ในตัวแปร ดังนั้นค่าคงที่ประเภทนี้จึงไม่สามารถอ้างอิงหรือเรียกใช้งานซ้ำได้อีก
ตัวอย่าง การใช้คำสั่ง printf() เพื่อแสดงข้อความที่เป็นค่าคงที่แบบ Literal
printf ("Hello, Good morning \n");
printf ("Pitchaporn Poonsawat ");
ตัวอย่าง การใช้คำสั่ง printf() เพื่อแสดงข้อความและตัวเลขที่เป็นค่าคงที่แบบ Literal
printf ("The number value of A is %d \n" , 10);
2. ค่าคงที่นิยามด้วย #define (Defined Constants)
ภาษา C ได้จัดเตรียมพรีโปรเวสเซอร์ไดเร็กทีฟชื่อ #define สำหรับการกำหนดค่าคงที่โดยการประกาศใช้งานไว้ในส่วนของเฮดเดอร์ไฟล์ (Header File) โดยมีรูปแบบการประกาศใช้งานค่าคงที่ดังนี้
#define ConstantsName value |
โดยที่ :
#define คือ พรีโปรเวสเซอร์ไดเร็กทีฟ
ConstantsName คือ ชื่อของค่าคงที่ นิยมใช้อักษรตัวพิมพ์ใหญ่
value คือ ค่าที่ต้องการกำหนดให้ค่าคงที่
ตัวอย่าง การกำหนดค่าคงที่ด้วย #define
#define VAT 0.07
#define TXT “Hello”
#define NEWLINE ‘\n’
#define ONE 1
#define PI 3.141159
3. ค่าคงที่ที่เก็บไว้ในตัวแปร (Memory Constants)
เป็นการกำหนดค่าคงที่ในรูปแบบของตัวแปร ซึ่งจะเขียนอยู่ในฟังก์ชัน main() โดยมีรูปแบบการประกาศใช้งานค่าคงที่ดังนี้
#define ConstantsName value |
โดยที่ :
const คือ การประกาศว่าตัวแปรที่กำหนดต่อไปนี้เป็นค่าคงที่
data_type คือ ชนิดข้อมูล
variable_name คือ ชื่อตัวแปรที่ใช้เก็บค่าคงที่
value คือ ค่าที่ต้องการกำหนดให้เป็นค่าคงที่
ตัวอย่าง การกำหนดค่าคงที่แบบเก็บไว้ในตัวแปร
const int count = 20; //กำหนดให้ count เป็นตัวคงที่ชนิด int และเก็บค่า 20
const float PI = 3.14159; //กำหนดให้ PI เป็นตัวคงที่ชนิด float และเก็บค่า 3.14159
ตัวอย่าง การกำหนดค่าคงที่และการนำไปใช้งาน

หน้าจอแสดงผลลัพธ์ : การหาพื้นที่วงกลม


การประกาศตัวแปร คือการจองเนื้อที่ในหน่วยความจำสำหรับเก็บค่าบางอย่างพร้อมทั้งกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้น เพื่อให้สะดวกในการเข้าถึงค่าที่เก็บอยู่ในหน่วยความจำดังกล่าว
รูปแบบการประกาศค่าตัวแปร
ตัวแปรทุกๆตัวที่ใช้งานในโปรแกรม จำเป็นจะต้องประกาศก่อนใช้งานเสมอ ภาษา C สามารถประกาศตัวแปรได้หลายรูปแบบด้วยกัน คือ
1. การประกาศตัวแปรที่ละตัว ที่ละบรรทัด ตัวอย่างเช่น
int num; |
// สร้างตัวแปรชื่อ num สำหรับเก็บข้อมูลจำนวนเต็ม |
int n ; |
// สร้างตัวแปรชื่อ n สำหรับเก็บข้อมูลจำนวนเต็ม |
float PI; |
// สร้างตัวแปรชื่อ num สำหรับเก็บข้อมูลชนิดทศนิยม |
char data; |
// สร้างตัวแปรชื่อ data สำหรับเก็บข้อมูลชนิดตัวอักษร |
char name[50]; |
// สร้างตัวแปรชื่อ name สำหรับเก็บข้อมูลชนิดตัวอักษร ขนาดไม่เกิน 50 |
2. การประกาศตัวแปรหลายๆตัว พร้อมกัน (Multiple Declaration) เป็นการประกาศตัวแปรที่มีชนิดข้อมูลเหมือนกันภายในบรรทัดเดียวกัน โดยใช้เครื่องหมายคอมม่า , คั่นระหว่างชื่อตัวแปรแต่ละตัว ตัวอย่างเช่น
int lower, upper, step;
char name, surname, nickname;
3. การประกาศตัวแปรพร้อมกำหนดค่าเริ่มต้น เป็นการประกาศตัวแปร พร้อมกำหนดค่าเริ่มต้นให้กับตัวแปรภายในบรรทัดนั้นๆ ตัวอย่างเช่น
int num = 10; |
// สร้างตัวแปรชื่อ num สำหรับเก็บข้อมูลจำนวนเต็ม มีค่าเท่ากับ 10 |
float PI = 3.14; |
// สร้างตัวแปรชื่อ PI สำหรับเก็บข้อมูลชนิดทศนิยม มีค่าเท่ากับ 3.14 |
char font = 'A' ; |
// สร้างตัวแปรชื่อ font สำหรับเก็บข้อมูลชนิดตัวอักษร มีค่าเริ่มต้น คือ A |
4. ประกาศตัวแปรชนิดค่าคงที่ เป็นการประกาศตัวแปรเพื่อจัดเก็บค่าคงที่ เป็นค่าในหน่วยความจำที่มีค่าคงที่ตลอดโปรแกรม ถ้าในโปรแกรมส่วนใดเรียกชื่อที่ประกาศไว้ก็จะได้ข้อมูลตามที่กำหนด จะใช้คำว่า const นำหน้า
const int Day = 7;
const int month = 12;
const float PI = 3.1418926;
const char name = 'A'; // ให้ค่ารหัส ASCII ของ A คือ 65
const char ch = 'B'; // ให้ค่ารหัส ASCII ของ B คือ 66

ตัวดำเนินการจะถูกใช้กับตัวแปรและค่าคงที่ในการดำเนินการบางอย่าง เช่น การดำเนินการทางคณิตศาสตร์ ในภาษา C มีตัวดำเนินการประเภทต่างๆ ที่ทำหน้าที่แตกต่างกันไป ยกตัวอย่างดังต่อไปนี้
นิพจน์ (Expression) คือ การนำค่าคงที่หรือตัวแปรมาเชื่อมต่อกัน ด้วยเครื่องหมายทางคณิตศาสตร์
โอเปอแรนด์ (Operand) หรือตัวถูกดำเนินการ จะเป็นค่าตัวเลข ซึ่งอาจเป็นได้ทั้งตัวแปรหรือค่าคที่ เมื่อนำตัวดำเนินการและโอเปอแรนด์ประกอบเข้าด้วยกัน เช่น a*b/c จะเรียกว่า นิพจน์
1. ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator)
ใช้สำหรับกระทำการคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร เปอร์เซ็นต์ โดยจะนำข้อมูลตัวหนึ่งไปกระทำกับอีกตัวหนึ่ง โดยใช้ผลลัพธ์เป็นตัวเลขทางคณิตศาสตร์ แบ่งออกได้ดังต่อไปนี้
ตารางแสดงตัวดำเนินการเลขคณิต
ตัวดำเนินการ |
กระบวนการ |
ข้อมูลที่กระทำ |
ข้อมูลผลลัพธ์ |
ตัวอย่าง |
+ |
การบวก (addition) |
จำนวนเต็ม,จำนวนจริง |
จำนวนเต็ม,จำนวนจริง |
x + y |
- |
การลบ (subtraction) |
จำนวนเต็ม,จำนวนจริง |
จำนวนเต็ม,จำนวนจริง |
x - y |
* |
การคูณ (multiplication) |
จำนวนเต็ม,จำนวนจริง |
จำนวนเต็ม,จำนวนจริง |
x * y |
/ |
การหาร (division) |
จำนวนเต็ม,จำนวนจริง |
จำนวนจริง |
x / y |
% |
การหารเอาเศษ (modulus) |
จำนวนเต็ม |
จำนวนเต็ม |
x % y |
ตัวอย่าง การใช้ตัวดำเนินการทางคณิตศาสตร์

หน้าจอแสดงผลลัพธ์ :

2. ตัวดำเนินการยูนารี
การใช้เครื่องหมายลบนำหน้าค่าตัวแปร จะทำให้ค่าถูกเปลี่ยนเป็นค่าติดลบโดยทันที เช่น -10 , -x (มิใช่ตัวดำเนินการลบแต่อย่างใด) ตัวอย่างเช่น 100 เมื่อนำตัวดำเนินการยูนารีติดลบนำหน้าค่าดังกล่าว ค่านั้นก็จะถูกเปลี่ยนเป็นค่าติดลบทันที ซึ่งก็คือ -100
ตัวอย่าง การใช้ตัวดำเนินการยูนารี
-743 -OX7FF -0.2
-root1 -(x+y) -3 *(x+y)
ตัวดำเนินการยูนารีสามารถนำมาใช้กับโอเปอแรนด์(ตัวถูกดำเนินการ) ที่เป็นค่าคงที่แบบเลขจำนวนเต็ม เลขจำนวนจริง ตัวแปร และนิพจน์ก็ได้ นอกจากนี้ในภาษา C ยังมีตัวดำเนินการยูนารีตัวอื่นๆอีก เช่น ตัวดำเนินการเพิ่มค่า (Increment Operator) ที่ใช้เครื่องหมาย ++ และตัวดำเนินการลดค่า (Decrement Operator) ที่ใช้เครื่องหมาย -- ซึ่งหมายถึง การเพิ่มค่าขึ้นทีละหนึ่งหรือการลดค่าลงทีละหนึ่ง โดยสามารถกำกับไว้หน้าตัวแปรหรือหลังตัวแปรก็ได้
++i , i++ หมายถึง i = i + 1 , -- i , i-- หมายถึง i = i - 1
ตัวดำเนินการ |
นิพจน์ |
ความหมาย |
++ (prefix) |
++a |
เพิ่มค่าขึ้นอีกหนึ่งให้กับ a ก่อน แล้วจึงนำค่าใหม่ของ a ในนิพจน์นี้ไปใช้ |
++ (postfix) |
a++ |
นำค่าปัจจุบันของ a ในนิพจน์นี้ไปใช้งานก่อนแล้วจึงเพิ่มค่า a ขึ้นอีกหนึ่ง |
-- (prefix) |
--b |
ลดค่าลงอีกหนึ่งให้กับ b ก่อน แล้วจึงนำค่าใหม่ของ b ในนิพจน์นี้ไปใช้ |
-- (postfix) |
b-- |
นำค่าปัจจุบันของ b ในนิพจน์นี้ไปใช้งานก่อนแล้วจึงลดค่า b ขึ้นอีกหนึ่ง |
ตัวอย่าง การทำงานของตัวดำเนินการยูนารี

หน้าจอแสดงผลลัพธ์ :

3. ตัวดำเนินการเปรียบเทียบและตรรกะ (Comparison and Logical Operators)
การเปรียบเทียบ หมายถึง การหาว่าเมื่อนำค่าที่อยู่ทางด้านซ้ายของเครื่องหมายกับค่าที่อยู่ทางขวา ของเครื่องหมายเปรียบเทียบ นำมาเปรียบเทียบกันแล้วจะได้ผลลัพธ์เป็นจริงหรือเท็จ ซึ่งในแต่ละกรณีเมื่อ เปรียบเทียบกันแล้ว จะได้ค่าเป็นจริงหรือเป็นเท็จเพียงค่าเดียวเท่านั้น ตัวดำเนินการเปรียบเทียบมักจะใช้กับคำสั่งตรวจสอบเงื่อนไข if และคำสั่งวนซ้ำ for while เพื่อควบคุมการทำงานของโปรแกรม
ตัวดำเนินการ |
ความหมาย |
ตัวอย่าง |
< |
น้อยกว่า |
a < b |
<= |
น้อยกว่าหรือเท่ากับ |
a <= b |
> |
มากกว่า |
a > b |
>= |
มากกว่าหรือเท่ากับ |
a >= b |
== |
เท่ากับ |
a == b |
!= |
ไม่เท่ากับ |
a != b |
ผลลัพธ์จะมี 2 กรณีคือ ถ้าผลลัพธ์ถูกต้องหรือเป็นจริง (True) จะมีค่าเป็น 1 ถ้าผลลัพธ์ผิดหรือเป็นเท็จ (False) จะมีค่าเป็น 0 ซึ่งค่าตรรกะดังกล่าวจะมีชนิดข้อมูลเป็นเลขจำนวนเต็ม
ตัวอย่าง การใช้ตัวดำเนินการเปรียบเทียบและตรรกะ

หน้าจอแสดงผลลัพธ์ :

นอกจากนี้ ยังสามารถนำตัวเชื่อมมาใช้ร่วมกันได้ ซึ่งประกอบด้วย
ตัวเชื่อม |
ความหมาย |
ตัวอย่าง |
&& |
และ (and) |
a && b |
|| |
หรือ (or) |
a || b |
! |
ไม่ใช่ (not) |
!a |
ผลลัพธ์ที่ได้ จะเป็นไปตามค่าความเป็นจริง ดังนี้
โอเปอแรนด์ |
ผลลัพธ์ |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
4. ตัวดำเนินการระดับบิต (Bitwise Operators)
ภาษา C ยังมีตัวดำเนินการระดับบิต เพื่อใช้จัดการข้อมูลภายในเครื่องเหมือนกับภาษาระดับต่ำ จะนำข้อมูลสองค่ามาเปรียบเทียบกัน โดยข้อมูลทั้งสองค่าจะต้องเป็นข้อมูลประเภทเดียวกัน
ตัวดำเนินการ |
ความหมาย |
& |
บิตไวส์ AND |
| |
บิตไวส์ OR |
^ |
บิตไวส์ XOR (exclusive OR) |
~ |
คอมพลีเมนต์ |
>> |
เลื่อนบิตไปทางขวา |
<< |
เลื่อนบิตไปทางซ้าย |
ผลลัพธ์ที่ได้จะได้จากตัวดำเนินการระดับบิต จะเป็นไปตามตารางค่าความจริง ดังนี้
โอเปอแรนด์ |
ผลลัพธ์ |
a |
b |
a & b |
a | b |
a ^ b |
~a |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
5. ตัวดำเนินการกำหนดค่า (Assignment operator)
ในภาษา C มีหลายวิธีในการกำหนดค่าให้กับตัวแปร ซึ่งปกติตัวดำเนินการกำหนดค่ามักจะใช้เครื่องหมาย = (เท่ากับ) และการกำหนดค่านิพจน์ก็จะใช้เครื่องหมาย + (บวก) เช่นกัน สำหรับรูปแบบของตัวดำเนินการกำหนดค่า สามารถเขียนได้ตามรูปแบบดังนี้
variable_name = expression |
โดย :
variable_name หมายถึง ชื่อตัวแปร
expression หมายถึง นิพจน์ ซึ่งสามารถเป็นค่าคงที่ ตัวแปร รวมถึงสูตรทางคณิตศาสตร์ที่ซับซ้อน
ตัวอย่าง : การกำหนดค่านิพจน์ด้วยตัวดำเนินการกำหนดค่า
a = 3;
x = y;
delta = 0.001;
sum = a + b;
area = length * width;
ตัวอย่าง : การกำหนดค่าให้นิพจน์และผลลัพธ์ที่ได้ โดยกำหนดค่าให้ตัวแปร a เป็นข้อมูลเลขจำนวนเต็ม
นิพจน์ |
ผลลัพธ์ |
a = 5.5 |
5 |
a = -5.5 |
5 |
a = 10.25 |
10 |
ตัวอย่าง : การกำหนดค่าให้นิพจน์และผลลัพธ์ที่ได้
โดยกำหนดให้ a และ b มีชนิดข้อมูลเป็นเลขจำนวนเต็ม และตัวแปร b ถูกกำหนดให้มีค่าเท่ากับ 5
นิพจน์ |
ผลลัพธ์ |
a = b |
5 |
a = b / 2 |
2 |
a = 2 * b / 2 |
5 |
a = 2 * (b / 2) |
4 |
นอกจากนี้ สามารถกำหนดค่าให้กับตัวแปรหลายๆ ตัวในคราวเดียวกันได้ ดังตัวอย่างต่อไปนี้
• ประกาศตัวแปร a และ b โดยกำหนดตัวแปร a และ b มีค่าเท่ากับ 10
a = b = 10;
• ประกาศตัวแปรพร้อมๆ กันหลายตัว และกำหนดค่าเริ่มต้นของตัวแปรทั้งหมดเป็น 10
int a, b, c; a = b = c = 10;
• รูปแบบที่ผิดของประกาศตัวแปรพร้อมๆ กันหลายตัว
int a = b = c = 10;
• นิพจน์เกี่ยวกับการสะสมค่า
total = total + sub_total total += sub_total
6. ตัวดำเนินการเงื่อนไข (Conditional Operator) จะนำไปใช้ในการทดสอบค่านิพจน์ทางตรรกะว่า จริงหรือเท็จ รูปแบบดังนี้
expression1? expression2 : expression3 |
โดยที่
expression 1 หมายถึง นิพจน์เงื่อนไขที่สร้างขึ้น
expression 2 หมายถึง นิพจน์ กรณีเป็นจริง
expression 3 หมายถึง นิพจน์ กรณีเป็นเท็จ
ตัวอย่างเช่น
result = (i < 0) ? 0 : 100;
จากตัวดำเนินการเงื่อนไขข้างต้น อธิบายได้ว่า :
i มีค่าน้อยกว่า 0 จริงหรือไม่
- ถ้า i มีค่าน้อยกว่า 0 เป็นจริง, result จะถูกกำหนดค่าเป็น 0
- ถ้า i มีค่าน้อยกว่า 0 เป็นเท็จ, result จะถูกกำหนดค่าเป็น 100
ซึ่งหากสร้างเงื่อนไขด้วยประโยคคำสั่ง if ก็จะต้องเขียนเป็น
if (i < 0)
result = 0;
else
result = 100;
หมายความว่า :
ถ้า i มีค่าน้อยกว่า 0 แล้ว
- กรณีเป็นจริง ตัวแปร result จะถูกกำหนดค่าเป็น 0
- กรณีเป็นเท็จ ตัวแปร result จะถูกกำหนดค่าเป็น 100
7. ตัวดำเนินการบอกขนาดข้อมูล (sizeof Operator)
ตัวดำเนินการประเภทนี้ จะทำให้เราทราบว่า ชนิดข้อมูลแต่ละชนิดที่มีอยู่ในเครื่องมีขนาดเท่าใด ทั้งนี้ชนิดข้อมูลจะมีขนาดเท่าใดนั้น จะสามารถทราบได้จากตัวดำเนินการ sizeof ซึ่งมีรูปแบบการเขียนดังนี้
โดย :
expression หมายถึง ชนิดข้อมูลหรือตัวแปร
ตัวอย่าง : การตรวจสอบขนาดของชนิดข้อมูลประเภทต่างๆ โดยใช้ตัวดำเนินการบอกขนาดข้อมูล

หน้าจอแสดงผลลัพธ์ :



|