View
40
Download
1
Category
Preview:
DESCRIPTION
517 101 LAB - 5_2. เครื่องหมายและการดำเนินการในภาษาซี. ตัวดำเนินการ(operator). ตัวดำเนินการ (operator) คือเครื่องหมายที่ใช้เพื่อแสดงความหมายในการกระทำต่างๆ สามารถจัดกลุ่มได้ดังนี้. ตัวดำเนินการกำหนดค่า (assignment operator) ตัวดำเนินการเลขคณิต (arithmetic operators) - PowerPoint PPT Presentation
Citation preview
เครื่��องหมายและการื่ดำ�าเนิ�นิการื่ในิภาษาซี�
517 101
LAB - 5_2
2
ตั�วดำ�าเนิ�นิการื่(operator) ตั�วดำ�าเนิ�นิการื่ (operator) คื�อเคืรื่��องหมายที่ �ใช้�เพื่��อแสดง
คืวามหมายในการื่กรื่ะที่�าต่�างๆ สามารื่ถจั�ดกลุ่!�มได�ด�งน #
1. ตั�วดำ�าเนิ�นิการื่ก�าหนิดำค�า(assignment operator)
2. ตั�วดำ�าเนิ�นิการื่เลขคณิ�ตั(arithmetic operators)
3. ตั�วดำ�าเนิ�นิการื่รื่ะดำ�บบ�ตั(bitwise operator)
4. ตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบ(relational operator)
5. ตั�วดำ�าเนิ�นิการื่เชิ�งตัรื่รื่กะ(logical operator)
6. ตั�วดำ�าเนิ�นิการื่พิ�เศษ (special operator)
6. ตั�วดำ�าเนิ�นิการื่พิ�เศษ (special operator)
3
ข%อม&ลที��ที�างานิก�บตั�วดำ�าเนิ�นิการื่ เรื่�ยก ว�า ตั�วถู&กดำ�าเนิ�นิการื่ (operand) ตั�ว
ดำ�าเนิ�นิการื่บางตั�วตั%องม�ตั�วถู&กดำ�าเนิ�นิ การื่ 2 ตั�ว ในิขณิะที��บางตั�วจะใชิ%ตั�ว
ถู&กดำ�าเนิ�นิการื่เพิ�ยงตั�วเดำ�ยว โดำยตั�วดำ�าเนิ�นิการื่ที�*งหมดำจะใชิ%ตั�วถู&กดำ�าเนิ�นิการื่ในิการื่สรื่%างนิ�พิจนิ,
4
ตั�วดำ�าเนิ�นิการื่ก�าหนิดำค�า(assignment operator)
ต่�วด�าเน$นการื่ก�าหนดคื�าที่ �ใช้�ก�นโดยที่��วไปคื�อ = โดยน$พื่จัน'ก�าหนดคื�าที่ �ใช้�ต่�วด�าเน$นการื่น #เขี ยนได�ในรื่)ปแบบด�งน #
โดยที่ � identifier โดยที่��วไปจัะเป+นต่�วแปรื่ แลุ่ะexpression จัะเป+นคื�าคืงที่ � ต่�วแปรื่ หรื่�อน$พื่จัน'ที่ �ม คืวามซั�บซั�อนก-ได�
นิ�พิจนิ, ที่างขีวาม�อ ก�าหนดคื�า ให�ก�บตั�วแปรื่ ที่างซั�ายม�อ เช้�น x = 50;
identifier = expression
5
ในหน.�งปรื่ะโยคื สามารื่ถใช้�ต่�วด�าเน$นการื่ = ได� หลุ่ายต่�ว
เช้�น int i, j, k,cost,fee; i = j = k = 100; cost = fee=4*5;
a = 3
x = y
delta = 0.001
sum = a + b
area = length * width
ตั�วอย�าง นิ�พิจนิ,ก�าหนิดำค�าที��ใชิ%ตั�วดำ�าเนิ�นิการื่ =
6
ตั�วดำ�าเนิ�นิการื่เลขคณิ�ตั(arithmetic operators)
เป-นิตั�วดำ�าเนิ�นิการื่ที��ที�าให%เก�ดำการื่กรื่ะที�าทีางคณิ�ตัศาสตัรื่, ปรื่ะกอบดำ%วย
operator
ความหมาย+ การื่บวก
- การื่ลุ่บ แลุ่ะ unary operator
* การื่คื)ณ
/ การื่หารื่ ซั.�งจัะเป+นการื่หาผลล�พิธ์,จัากการื่หารื่
% ( modulo)
การื่หาเศษ(remainder) ที่ �เป+นจ�านิวนิเตั1ม จัากการื่หารื่ (operand ต่�องเป+นจั�านวนเต่-มที่�#งคื)�)
7
ต่�วอย�าง แสดงขี�#นต่อนการื่ที่�างานขีองต่�วด�าเน$นการื่
4 + 3 * 2 4 + 6
9 * 2 - 15/3 + 7 18 - 5 + 7 13 + 7
20
8
จังหาคื�าน$พื่จัน'ต่�อไปน #
-(-5+(2*4-1))+((6+2)*5+8)/4
-(-5+(8-1))+(8*5+8)/4
-(-5+7)+(40+8)/4
-(2)+48/4
-2+12
10
9
ตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบ(relational operator)
ใช้�ใน ค�าส��งปรื่ะเภทีเง��อนิไข (condition statement) เช้�น if
ใช้�เปรื่�ยบเที�ยบตั�วเลขเที�านิ�*นิ การื่เปรื่ ยบเที่ ยบ character string ต่�องใช้� function เก �ยวก�บstring
ผลล�พิธ์, จัากการื่เปรื่ ยบเที่ ยบ อาจัจัะเป+นเที1จ ( ม คื�าเที่�าก�บ 0) หรื่�อจรื่�ง ( ม คื�าเที่�าก�บ 1 หรื่�อม คื�าใดๆที่ �ไม�เที่�าก�บ 0)
หมายเหตั3 ภาษา C จัะไม�ม ขี�อม)ลุ่ช้น$ด boolean
(true หรื่�อ false) แต่�ใช้�ค�าตั�วเลข 0 แลุ่ะต่�วเลุ่ขีอ��น
เที1จ
จรื่�งเลขที��ไม�ใชิ� 0
เลข 0
10
operator
ความหมาย> มากกว�า
>= มากกว�าหรื่�อเที่�าก�บ< น�อยกว�า
<= น�อยกว�าหรื่�อเที่�าก�บ== เที่�าก�บ
!= ไม�เที่�าก�บ
ตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบ ในิภาษา c
เรื่าสามารื่ถต่รื่วจัสอบคื�าได�ด�งน #printf(“value of true = %d “, 5==5); /* ใน turbo c จัะแสดงคื�า 1 */printf(“value of false = %d”, 5!=5);
ข%อควรื่รื่ะว�งoperator == ใช้�ใน
การื่เปรื่ ยบเที่ ยบ ส�วน = ใช้�ก�าหนดคื�าให�
ต่�วแปรื่
11
< <= > >= ต่�วด�าเน$นการื่เหลุ่�าน #ม ลุ่�าด�บ คืวามส�าคื�ญเที่�าก�น แต่�ม ลุ่�าด�บคืวามส�าคื�ญต่��ากว�าต่�ว ด�าเน$นการื่เลุ่ขีคืณ$ต่ โดยลุ่�าด�บการื่ที่�างานในกลุ่!�ม
เด ยวก�นน�#นจัะที่�าจัากซั�ายไปขีวา == != ต่�วด�าเน$นการื่เที่ ยบเที่�า(equality
operator) สองต่�วน #ม ลุ่�าด�บคืวามส�าคื�ญเที่�าก�น แต่�ต่��ากว�าต่�วด�าเน$นการื่เปรื่ ยบเที่ ยบ< <= > >=
เหลุ่�าน # แลุ่ะม ลุ่�าด�บการื่ที่�างานในกลุ่!�มเด ยวก�นจัากซั�ายไปขีวา
12
ต่�วอย�าง 1
สมมต่$ i, j แลุ่ะk เป+นต่�วแปรื่จั�านวนเต่-มที่ �ม คื�า 1, 2 แลุ่ะ3
ต่ามลุ่�าด�บ ต่ารื่างต่�อไปน #เป+นน$พื่จัน'ที่ �สรื่�างจัากต่�วแปรื่เหลุ่�าน #นิ�พิจนิ, การื่แปลความหมาย ค�า
i < j(i + j) >= k
(j + k) > (i + 5)k != 3j == 2
จรื่�งจรื่�งเที1จเที1จจรื่�ง
11001
13
logical operator คื�อ ต่�วด�าเน$นการื่ที่ �ใช้� ในการื่เปรื่ ยบเที่ ยบแลุ่ะต่�ดส$นใจั โดยเอาเง��อนไขี
ต่�#งแต่� 2 เง��อนไขีมาเปรื่ ยบเที่ ยบก�น ผลุ่ที่ �ได� จัากการื่เปรื่ ยบเที่ ยบจัะได�ผลุ่เป+น 2 กรื่ณ คื�อ
จรื่�งซี4�งให%ค�าเป-นิ 1 แลุ่ะ เที1จซี4�งให%ค�าเป-นิ 0 เช้�นเด ยวก�บต่�วด�าเน$นการื่เปรื่ ยบเที่ ยบ(relational operator) โดยต่�ว
ด�าเน$นการื่เช้$งต่รื่รื่กะ (logical operator) ม ด�งน #
ตั�วดำ�าเนิ�นิการื่เชิ�งตัรื่รื่กะ(logical operator)
14
ตั�วดำ�าเนิ�นิการื่เชิ�งตัรื่รื่กะ(logical operator)
operator
การื่ที�างานิ
&& เอาสถานะที่�#งสองมาand ก�น
|| เอาสถานะที่�#งสองมาor ก�น
! not เปลุ่ �ยนสถานะให� ต่รื่งก�นขี�าม ( เป+น
unary operator)
operand! operand
เที่-จัจัรื่$ง เที่-จั
จัรื่$ง
15
ตัารื่างค�าความจรื่�งของoperator && และ ||
OP1
OP2 OP1 && OP2
OP1 || OP2เที1จ เที1จ เที1จ เที1จ
เที1จ จรื่�ง เที1จ จรื่�งจรื่�ง เที1จ เที1จ จรื่�งจรื่�ง จรื่�ง จรื่�ง จรื่�ง
หมายเหตั3 คื�าขีอง operand ถ�าเป+น 0 ถู�อว�า เที1จ ส�วนคื�าอ��นๆที่ � ไม�ใชิ� 0 ถู�อว�าจรื่�งตั�วอย�าง
printf(“value of (2>5) && (5>=5) = %d “, (2>5) && (5>=5));
printf(“value of (2>5) || (5>=5) = %d “, (2>5) || (5>=5));
16
ตั�วดำ�าเนิ�นิการื่พิ�เศษ (special operator)
ตั�วดำ�าเนิ�นิการื่เพิ��ม/ลดำ (increment/decrement operator)
ตั�วดำ�าเนิ�นิการื่พิอยนิ,เตัอรื่, (pointer-related operators)
ตั�วดำ�าเนิ�นิการื่คอมม�า (comma operator) ตั�วดำ�าเนิ�นิการื่ก�าหนิดำชินิ�ดำ (cast operator) ตั�วดำ�าเนิ�นิการื่หาขนิาดำ (sizeof operator)
คื�อ ต่�วด�าเน$นการื่ที่ �อย)�นอกเหน�อจัากกลุ่!�มต่�วด�าเน$นการื่ ต่�างๆ ที่ �ได�กลุ่�าวมา ซั.�งปรื่ะกอบด�วย
17
ตั�วดำ�าเนิ�นิการื่เพิ��ม/ลดำ (increment/decrement operator)
เป+นต่�วด�าเน$นการื่ส�าหรื่�บการื่เพื่$�มคื�าแลุ่ะการื่ลุ่ดคื�าในตั�วแปรื่คืรื่�#งลุ่ะหน.�ง
operator ชิ��อ การื่ที�างานิ++--
incrementdecrement
เพิ��มค�าข4*นิหนิ4�งลดำค�าลงหนิ4�ง
ซั.�งสามารื่ถน�าไปใช้�ก�บต่�วแปรื่ได� 2 ลุ่�กษณะคื�อ
18
ซี4�งในิกรื่ณิ�นิ�*จะที�า operator ตั�วอ��นิก�อนิ แล%วจ4งจะ เพิ��มหรื่�อลดำค�าในิตั�วแปรื่
1. วางไว%หล�งตั�วแปรื่ เชิ�นิ i++ หรื่�อ i--
เช้�น count = 2;
i = count++;
ด�งน�#นจัะน�าคื�าในต่�วแปรื่ count ก�าหนดให�ก�บ i ก�อน
แลุ่�วจั.งเพื่$�มคื�าในต่�วแปรื่ count ขี.#นอ กหน.�ง จัะได� i ม คื�าเที่�าก�บ 2
count ม คื�าเที่�าก�บ 3
19
2. วางไว%หนิ%าตั�วแปรื่ เชิ�นิ ++i หรื่�อ --i
เช้�น count = 2;
i = ++count;
ด�งน�#นจัะเพื่$�มคื�าในต่�วแปรื่ count ขี.#นอ กหน.�ง ก�อนจัะก�าหนดให�
ก�บต่�วแปรื่ i
จัะได� i ม คื�าเที่�าก�บ 3
count ม คื�าเที่�าก�บ 3
ซี4�งในิกรื่ณิ�นิ�*จะเพิ��มหรื่�อลดำค�าในิตั�วแปรื่ก�อนิ แล%วจ4งที�า operator ตั�วอ��นิ
20
ใชิ%แบ�งแยกแตั�ละส�วนิ ภายในิstatement เดำ�ยวก�นิ
ตั�วอย�างเชิ�นิ int i = 5, j =6 , k;
ตั�วดำ�าเนิ�นิการื่ คอมม�า (comma operators)
21
เรื่าสามารื่ถูเปล��ยนิปรื่ะเภทีของข%อม&ลที��ไดำ%จาก นิ�พิจนิ,ไปเป-นิปรื่ะเภทีของข%อม&ลที��เรื่าตั%องการื่ไดำ%
โดำยใส�ชิ��อปรื่ะเภทีของข%อม&ลที��ตั%องการื่เอาไว%ในิวงเล1บก�อนิที��จะเข�ยนินิ�พิจนิ,นิ�*นิ
โดำยม�รื่&ปแบบ ค�อ
โดยคื�าว�า type เป+นช้��อช้น$ดขีองต่�วแปรื่ที่ �ต่�องการื่รื่ะบ!ให�แก�expression หรื่�อเที่อมขีองคื�าส��ง ซั.�ง expression อาจั
แที่นโดยต่�วแปรื่ได�โดยต่รื่ง
ตั�วดำ�าเนิ�นิการื่ก�าหนิดำชินิ�ดำ (cast operator)
(type) expression;
22
float cost=3.5; int mycost = cost; /* mycost ม คื�า
เที่�าก�บ 3 */ ขี�างต่�น ภาษา c จัะแปลุ่งช้น$ดขีองขี�อม)ลุ่ให�โดยอ�ต่โนม�ต่$
แต่�เรื่าก-สามารื่ถรื่ะบ!ให�ม การื่แปลุ่งช้น$ดต่ามที่ �เรื่าต่�องการื่โดยใช้�
casting operator เช้�น i = (int) 3.4 * 6;
i = (int) (3.4*6);
23
Compound assignments
ในปรื่ะโยคืที่ �ม การื่ก�าหนดคื�าใหม�ให�ก�บต่�วแปรื่ โดยใช้�คื�าเด$มใน ต่�วแปรื่
ไปที่�าการื่คื�านวณ เช้�น
ในการื่ที่�างานลุ่�กษณะน # C ได�จั�ดเต่รื่ ยม operator ในกลุ่!�ม ที่ �เรื่ ยกว�า ที่ �เรื่ ยกว�า compound assignments เพื่��อ
ให�ผ)�ใช้�สามารื่ถเรื่ ยกใช้�ได�ง�ายขี.#น operator ในกลุ่!�มขีองcompound assignment ปรื่ะกอบด�วย
int i = 5;i = i + 5; /* i เที�าก�บ 10 */
คื�อ จัะม การื่น�าคื�าเด$มในต่�วแปรื่ i บวกด�วย 5 แลุ่�วน�าผลุ่ลุ่�พื่ธ์'ที่ �ได�ก�าหนดให�ต่�วแปรื่ i อ กคืรื่�#ง
24
ต่ารื่างต่�วอย�างการื่ใช้�compound assignments
Operator
ตั�วอย�าง เที�ยบเที�าก�บ+= i += 5; i = i + 5;
-= i -= 5; i = i - 5;
*= i *= 5; i = i * 5;
/= i /= 5;
i = i / 5;%= i %= 5; i = i % 5;
25
สรื่3ป ล�าดำ�บความส�าค�ญของoperator
ลุ่�าด�บคืวามส�าคื�ญน�อย
ลุ่�าด�บคืวามส�าคื�ญมากกล3�มของตั�วดำ�าเนิ�นิการื่ ตั�วดำ�าเนิ�นิการื่
ตั�วดำ�าเนิ�นิการื่ย&นิารื่� ค&ณิหารื่และหาเศษเหล�อ
บวกและลบตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบตั�วดำ�าเนิ�นิการื่เที�ยบเที�าANDORตั�วดำ�าเนิ�นิการื่เง��อนิไขตั�วดำ�าเนิ�นิการื่ก�าหนิดำค�า
- ++ -- ! sizeof (type)* / %
+ -< <= > >=
== !=&&||? :
= += -= *= /= %=
Recommended