ค่าคงที่ ตัวแปร ตัวดำเนินการในภาษาซี

องค์ประกอบพื้นฐานของภาษา C

อักขระ(characters) ค่าคงที่(constants) ตัวแปร(variables) ตัวดำเนินการ(operators) นิพจน์(expressions)

Characters แบ่งเป็น

ตัวเลข (digits) คือ ตัวเลข 0 ถึง 9 และเลขฐานสิบหก คือ A B C D E และ F

ตัวอักษร(letters) คือตัวอักษรในภาษาอังกฤษ เป็นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก คือ A-Z และ a-z

อักขระพิเศษ(special characters) คือ ! * + " < # ( = | > % ) ~ : / ^ - [ ; ? , & _ ] ' . space ในภาษาซี ถือว่า เครื่องหมายขีดเส้นใต้เป็นตัวอักษร ตัวหนึ่ง characters ต่าง ๆ นี้จะใช้เป็นค่าคงที่ ตัวแปร ตัวดำเนินการ

Constants เป็นค่าที่มีค่าไม่เปลี่ยนแปลง แบ่งเป็น

ค่าคงที่ประเภทเลขจำนวนเต็ม (integer constant) คือเลขจำนวนเต็ม ที่อยู่ระหว่าง -32768 ถึง 32767 เช่น -25 หรือ 0 หรือ 236 ค่าเหล่านี้แต่ละค่าใช้หน่วยความจำในการเก็บ 2 ไบต์ ค่าเหล่านี้เขียนในรูปเลขฐานสิบ ฐานแปด(เขียนโดยใช้เลขศูนย์นำหน้า เช่น 045) เลขฐานสิบหก(เขียนโดย ใช้เลขศูนย์และx นำหน้า เช่น 0x28 0X2AF)

ค่าคงที่ชนิดตัวเลขทศนิยม(floating point constants) เป็นตัวเลขทศนิยม เช่น 1.0 1.6 E+09 ค่านี้ใช้หน่วยความจำในการเก็บค่าละ 4 ไบต์ และมีค่าอยู่ในช่วง 1.2 E -38 ถึง 3.4E+38 โดย 3 ไบต์แรกเก็บค่าตัวทศนิยม ส่วนไบต์สุดท้ายเก็บเลขยกกำลัง

ค่าคงที่ชนิดตัวเลขทศนิยมความละเอียดสองเท่า (double floating point) เรียกสั้น ๆ ว่า double เก็บจำนวน 2.2E-308 ถึง 1.8E+308 เท่านั้น ใช้หน่วยความจำ 8 ไบต์ 7 ไบต์แรกเก็บเลขทศนิยม ไบต์สุดท้ายเก็บเลขยกกำลัง

ค่าคงที่ชนิดตัวอักขระ (single character constant) เก็บตัวอักขระ 1 ตัว โดยใช้เครื่องหมาย ' และ ' ล้อม 1 ตัวอักขระใช้ 1 ไบต์ เช่น 'E' 'X'

ค่าคงที่ชนิดข้อความ (string constant) ใช้เก็บข้อความ มีความยาวตั้งแต่ 1 ตัวอักขระ เก็บในรูปอาร์เรย์ แต่ละตัวใช้หน่วยความจำ 1 ไบต์ เรียงต่อกันโดยไบต์สุดท้ายจะต้องเก็บ \0 (null charactor) เพื่อบอกว่าจบข้อความแล้ว เช่น "Bodindecha" ใช้หน่วยความจำ 11ไบต์


ตัวแปร(variables)

เป็นชื่อที่ตั้งเพื่อใช้อ้างอิงถึงข้อมูลต่าง ๆ โดยตัวแปรจะมีการใช้เนื้อที่ในหน่วยความจำในปริมาณที่ต่างกันขึ้นกับชนิดของข้อมูล ข้อมูล พื้นฐานในภาษาซี มี 5 ชนิด คือ อักขระ (char) จำนวนเต็ม(int) จำนวนจริง(float) จำนวนจริงละเอียด2เท่า(double) ไม่ให้ค่าใด ๆ (void) นอกจากนี้เพื่อความสามารถในการใช้งานจึงมีการเพิ่มชนิดของตัวแปรขึ้นมาดังตาราง

ตารางแสดงชนิดของตัวแปร

คำประกาศชนิดของตัวแปร
เครื่องหมาย
จำนวนไบต์ที่ใช้
ค่าที่เป็นไปได้
char
คิดเครื่องหมาย
1
-128 ถึง 128
int
คิดเครื่องหมาย
2
-32768 ถึง 32767
short
คิดเครื่องหมาย
2
-32768 ถึง 32767
long
คิดเครื่องหมาย
4
-2147483648 ถึง 2147483647
unsigned char
ไม่คิดเครื่องหมาย
1
0 ถึง 255
unsigned int
ไม่คิดเครื่องหมาย
2
0 ถึง 65535
unsigned short
ไม่คิดเครื่องหมาย
2
0 ถึง 65535
unsigned long
ไม่คิดเครื่องหมาย
4
0 ถึง 4294967295
float
คิดเครื่องหมาย
4
3.4E-38 ถึง 3.4E+38
double
คิดเครื่องหมาย
8
1.7E-308 ถึง 1.7E+308
long double
คิดเครื่องหมาย
10
3.4E-4932 ถึง 1.1E+4932


การตั้งชื่อตัวแปร

1. ต้องขึ้นต้นด้วยตัวอักษรเท่านั้น ตัวต่อไปจะเป็นตัวเลขหรือตัวอักษรได้ ความยาวไม่เกิน 31 ตัว

2. ชื่อตัวแปรควรสื่อความหมายของตัวแปรเพื่อป้องกันความสับสนของการพิจารณาโปรแกรม

3.ห้ามตั้งชื่อตรงกับคำสงวนในภาษาซี ซึ่งมี 33 คำ ดังนี้

asm auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while


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

ในการจะใช้งานตัวแปรจะต้องมีการประกาศชนิดและชื่อของตัวแปรนั้นก่อน โดยการประกาศตัวแปรใช้รูปแบบ คือ ชนิดของตัวแปร ชื่อตัวแปร โดยถ้ามีตัวแปรชนิดเดียวอาจประกาศพร้อมกันโดยใช้ คอมมา คั่นระหว่างชื่อของตัวแปร ถ้ามีการกำหนดค่าให้ใช้เครื่องหมาย = และใช้เครื่องหมายแสดงการจบคำสั่งเมื่อสิ้นสุด คำสั่ง ตัวอย่าง เช่น

char name, day = 'S' , surname[20] ="Kodedee";

int x=5 ,y,z[100]; float a=5.00 ,b,c; double k=1.234567, m ;


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

ตัวดำเนินการมีหลายประเภทลักษณะการดำเนินการแตกต่างกันไป ในที่นี้จะกล่าวถึงบางประเภทเท่านั้น

ตัวดำเนินการทางคณิตศาสตร์ (mathematical operators)

สัญลักษณ์
การดำเนินการ
ตัวอย่าง
+
การบวก
2+5 ผลลัพธ์ 7
-
การลบ
7-4 ผลลัพธ์ 3
*
การคูณ
2*6 ผลลัพธ์ 12
/
การหาร
8/2 ผลลัพธ์ 4
%
การหารหาเศษ
9%4 ผลลัพธ์ 1

ตัวดำเนินการความสัมพันธ์หรือการเปรียบเทียบ (relational operators)

สัญลักษณ์
การดำเนินการ
ตัวอย่าง
<
น้อยกว่า
2<3 ผลลัพธ์ จริง(1)
>
มากกว่า
2>3 ผลลัพธ์ เท็จ(false)(0)
<=
น้อยกว่าหรือเท่ากับ
2<= 3 ผลลัพธ์ จริง(true)
>=
มากกว่าหรือเท่ากับ
2>= 3 ผลลัพธ์ เท็จ(false)
==
เท่ากับ
4==4 ผลลัพธ์ จริง(true)
!=
ไม่เท่ากับ
2!= 2 ผลลัพธ์ เท็จ(false)

ตัวดำเนินการตรรกะ (logical operators)

สัญลักษณ์
การดำเนินการ
ตัวอย่าง
&&
และ(AND)
(2<3)&&(3>1) ผลลัพธ์ จริง
||
หรือ(OR)
(2>3)||(4<1) ผลลัพธ์ เท็จ(false)
!
ไม่(NOT)
!(2> 3) ผลลัพธ์ จริง(true)

ตัวดำเนินการกำหนดค่า (assignment operators)

สัญลักษณ์
การดำเนินการ
ตัวอย่าง
=
กำหนดค่า(assignment)
a=2 ความหมายคือ กำหนดให้a มีค่าเป็น2
+=
การบวก(addition)
a+=b ความหมายคือ(a=a+b)
*=
การคูณ(multiplication)
a*=b ความหมายคือ(a=a*b)
-=
การลบ(subtraction)
a-=b ความหมายคือ(a=a-b)
/=
การหาร(division)
a/=b ความหมายคือ(a=a/b)
%=
การหารหาเศษ(remainder)
a%=b ความหมายคือ(a=a%b)
++
เพิ่มค่า(increment)
a++ หรือ ++a ความหมายคือ a=a+1
--
ลดค่า(decrement)
a-- หรือ --a ความหมายคือ a=a-1


ลำดับการดำเนินการของตัวดำเนินการ (operator precedence)

ลำดับที่
ตัวดำเนินการ
ลักษณะการทำงาน
1
( ) [ ] . ->
ซ้าย ไป ขวา
2
- ~ | * &
ขวา ไป ซ้าย
3
++ --
ขวา ไป ซ้าย
4
* / %
ซ้าย ไป ขวา
5
+ -
ซ้าย ไป ขวา
6
<< >>
ซ้าย ไป ขวา
7
< > <= >=
ซ้าย ไป ขวา
8
== !=
ซ้าย ไป ขวา
9
&(bitwise AND)
ซ้าย ไป ขวา
10
^(bitwise XOR)
ซ้าย ไป ขวา
11
|(bitwise OR)
ซ้าย ไป ขวา
12
&&
ซ้าย ไป ขวา
13
||
ซ้าย ไป ขวา
14
?:
ซ้าย ไป ขวา
15
= += -= /= %=
ขวา ไป ซ้าย
16
<<= >>=
ขวา ไป ซ้าย

โดยตัวดำเนินการที่มีลำดับน้อยกว่าจะดำเนินก่อนตัวดำเนินการที่มีลำดับสูงกว่า เช่น

X = 2 + 5 * 3 จะมีลำดับการดำเนินการ คือ

ลำดับที่ 1 5 * 3 (เพราะ * มีลำดับเป็น 4 ส่วน + อยู่ลำดับ 5)

ลำดับที่ 2 2 + 15

ลำดับที่ 3 17 เป็นค่าของ X


นิพจน์ (expression)

เกิดจากการนำ ค่าคงที่ หรือ ตัวแปร และตัวดำเนินการมาประกอบกัน โดยนิพจน์มีหลายชนิด เช่นนิพจน์ทางคณิตศาสตร์ นิพจน์ทางตรรกะ นิพจน์ทางการเปรียบเทียบ นิพจน์เกี่ยวกับเงือนไข นิพจน์เกี่ยวกับข้อความ เช่น

2 + x * 5 เป็นตัวอย่างของนิพจน์ทางคณิตศาสตร์ (2>3)&&(5>=4) เป็นนิพจน์ทางตรรกะและการเปรียบเทียบ !(a) เป็นนิพจน์ทางตรรกะ if(x==y) เป็นนิพจน์เงื่อนไข

ตัวอย่าง การหาผลลัพธ์ของนิพจน์

กำหนด int a = 10 , b = 12, c =3; จงหาผลลัพธ์ของ 2 * a + b % c ดำเนินการดังนี้ (2 * a) + (b %c) ผลลัพธ์ คือ 20 + 0 คือ 20

จากข้อกำหนดด้านบน จงหาผลลัพธ์ ของ (a>b)&&(c<=b) ซึ่งเราอาจพิจารณา ดังนี้

(เท็จ)&& (จริง) ดังนั้น ผลลัพธ์ คือ เท็จ

จากความรู้ที่เรียนมาในใบความรู้ที่ 1 และ 2 ควรจะเขียนโปรแกรมเป็นภาษาซีได้บ้างแล้ว

ตัวอย่าง กำหนดให้ x y z เป็นจำนวนเต็ม จงเขียนโปรแกรม หา ค่า ของ z ที่มีความสัมพันธ์กับ x y เป็นสมการทางคณิตศาสตร์ ดังนี้ z = 5x + 10y โดย x มีค่าเป็น 6 ส่วน y มีค่า 7 และแสดงผลลัพธ์ทางจอภาพ

โปรแกรม อาจเป็นทำนองนี้

/* program name 2_1_1.c */

#include <stdio.h>

int x = 6,y=7,z;

main()

{

z = (5 * x) +( 10 * y);

printf("value of x = %d \t value of y = %d \t value of z = %d",x,y,z);

}

หรือ

/* program name 2_1_1.c */

#include <stdio.h>

int x = 6,y=7,z;

main()

{

printf("value of x = %d \t value of y = %d \t value of z = %d",x,y,5*x+10*y);

}

1 ความคิดเห็น:

  1. 1) ตัวเเปรชื่อ i เก็บจำนวนเต็ม
    2) ตัวเเปรชื่อ e เก็บอักขระ
    3) ตัวเเปรชื่อ pi เก็บเลขทศนิยม
    4) ตัวแปรชื่อ department เก็บข้อความ
    5) ตัวเเปรชื่อ i เก็บจำนวนเต็มพร้อมกำหนดให้มีค่าเท่ากับ 0
    6) ตัวเเปรชื่อ e เก็บอักขระพร้อมกำหนดให้มีค่าเท่ากับ e
    7) ตัวเเปรชื่อ pi เก็บเลขทศนิยมพร้อมกำหนดให้มีค่าเท่ากับ 3.14
    8) ตัวเเปรชื่อ department เก็บข้อความพร้อมกำหนดให้มีค่าเท่ากับ electrical engineering
    บอกคำตอบหน่อย

    ตอบลบ