เครื่องหมายและการดำเนินการในภาษาซี...

25
เเเเเเเเเเเเเเเเเ เเเเเเเเเเเเเเเเเเ 517 101 LAB - 5_2

Upload: keon

Post on 05-Jan-2016

42 views

Category:

Documents


1 download

DESCRIPTION

517 101 LAB - 5_2. เครื่องหมายและการดำเนินการในภาษาซี. ตัวดำเนินการ(operator). ตัวดำเนินการ (operator) คือเครื่องหมายที่ใช้เพื่อแสดงความหมายในการกระทำต่างๆ สามารถจัดกลุ่มได้ดังนี้. ตัวดำเนินการกำหนดค่า (assignment operator) ตัวดำเนินการเลขคณิต (arithmetic operators) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: เครื่องหมายและการดำเนินการในภาษาซี

เครื่��องหมายและการื่ดำ�าเนิ�นิการื่ในิภาษาซี�

517 101

LAB - 5_2

Page 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)

Page 3: เครื่องหมายและการดำเนินการในภาษาซี

3

ข%อม&ลที��ที�างานิก�บตั�วดำ�าเนิ�นิการื่ เรื่�ยก ว�า ตั�วถู&กดำ�าเนิ�นิการื่ (operand) ตั�ว

ดำ�าเนิ�นิการื่บางตั�วตั%องม�ตั�วถู&กดำ�าเนิ�นิ การื่ 2 ตั�ว ในิขณิะที��บางตั�วจะใชิ%ตั�ว

ถู&กดำ�าเนิ�นิการื่เพิ�ยงตั�วเดำ�ยว โดำยตั�วดำ�าเนิ�นิการื่ที�*งหมดำจะใชิ%ตั�วถู&กดำ�าเนิ�นิการื่ในิการื่สรื่%างนิ�พิจนิ,

Page 4: เครื่องหมายและการดำเนินการในภาษาซี

4

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

ต่�วด�าเน$นการื่ก�าหนดคื�าที่ �ใช้�ก�นโดยที่��วไปคื�อ = โดยน$พื่จัน'ก�าหนดคื�าที่ �ใช้�ต่�วด�าเน$นการื่น #เขี ยนได�ในรื่)ปแบบด�งน #

โดยที่ � identifier โดยที่��วไปจัะเป+นต่�วแปรื่ แลุ่ะexpression จัะเป+นคื�าคืงที่ � ต่�วแปรื่ หรื่�อน$พื่จัน'ที่ �ม คืวามซั�บซั�อนก-ได�

นิ�พิจนิ, ที่างขีวาม�อ ก�าหนดคื�า ให�ก�บตั�วแปรื่ ที่างซั�ายม�อ เช้�น x = 50;

identifier = expression

Page 5: เครื่องหมายและการดำเนินการในภาษาซี

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

ตั�วอย�าง นิ�พิจนิ,ก�าหนิดำค�าที��ใชิ%ตั�วดำ�าเนิ�นิการื่ =

Page 6: เครื่องหมายและการดำเนินการในภาษาซี

6

ตั�วดำ�าเนิ�นิการื่เลขคณิ�ตั(arithmetic operators)

เป-นิตั�วดำ�าเนิ�นิการื่ที��ที�าให%เก�ดำการื่กรื่ะที�าทีางคณิ�ตัศาสตัรื่, ปรื่ะกอบดำ%วย

operator

ความหมาย+ การื่บวก

- การื่ลุ่บ แลุ่ะ unary operator

* การื่คื)ณ

/ การื่หารื่ ซั.�งจัะเป+นการื่หาผลล�พิธ์,จัากการื่หารื่

% ( modulo)

การื่หาเศษ(remainder) ที่ �เป+นจ�านิวนิเตั1ม จัากการื่หารื่ (operand ต่�องเป+นจั�านวนเต่-มที่�#งคื)�)

Page 7: เครื่องหมายและการดำเนินการในภาษาซี

7

ต่�วอย�าง แสดงขี�#นต่อนการื่ที่�างานขีองต่�วด�าเน$นการื่

4 + 3 * 2 4 + 6

9 * 2 - 15/3 + 7 18 - 5 + 7 13 + 7

20

Page 8: เครื่องหมายและการดำเนินการในภาษาซี

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

Page 9: เครื่องหมายและการดำเนินการในภาษาซี

9

ตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบ(relational operator)

ใช้�ใน ค�าส��งปรื่ะเภทีเง��อนิไข (condition statement) เช้�น if

ใช้�เปรื่�ยบเที�ยบตั�วเลขเที�านิ�*นิ การื่เปรื่ ยบเที่ ยบ character string ต่�องใช้� function เก �ยวก�บstring

ผลล�พิธ์, จัากการื่เปรื่ ยบเที่ ยบ อาจัจัะเป+นเที1จ ( ม คื�าเที่�าก�บ 0) หรื่�อจรื่�ง ( ม คื�าเที่�าก�บ 1 หรื่�อม คื�าใดๆที่ �ไม�เที่�าก�บ 0)

หมายเหตั3 ภาษา C จัะไม�ม ขี�อม)ลุ่ช้น$ด boolean

(true หรื่�อ false) แต่�ใช้�ค�าตั�วเลข 0 แลุ่ะต่�วเลุ่ขีอ��น

เที1จ

จรื่�งเลขที��ไม�ใชิ� 0

เลข 0

Page 10: เครื่องหมายและการดำเนินการในภาษาซี

10

operator

ความหมาย> มากกว�า

>= มากกว�าหรื่�อเที่�าก�บ< น�อยกว�า

<= น�อยกว�าหรื่�อเที่�าก�บ== เที่�าก�บ

!= ไม�เที่�าก�บ

ตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบ ในิภาษา c

 เรื่าสามารื่ถต่รื่วจัสอบคื�าได�ด�งน #printf(“value of true = %d “, 5==5); /* ใน turbo c จัะแสดงคื�า 1 */printf(“value of false = %d”, 5!=5);

ข%อควรื่รื่ะว�งoperator == ใช้�ใน

การื่เปรื่ ยบเที่ ยบ ส�วน = ใช้�ก�าหนดคื�าให�

ต่�วแปรื่

Page 11: เครื่องหมายและการดำเนินการในภาษาซี

11

< <= > >= ต่�วด�าเน$นการื่เหลุ่�าน #ม ลุ่�าด�บ คืวามส�าคื�ญเที่�าก�น แต่�ม ลุ่�าด�บคืวามส�าคื�ญต่��ากว�าต่�ว ด�าเน$นการื่เลุ่ขีคืณ$ต่ โดยลุ่�าด�บการื่ที่�างานในกลุ่!�ม

เด ยวก�นน�#นจัะที่�าจัากซั�ายไปขีวา == != ต่�วด�าเน$นการื่เที่ ยบเที่�า(equality

operator) สองต่�วน #ม ลุ่�าด�บคืวามส�าคื�ญเที่�าก�น แต่�ต่��ากว�าต่�วด�าเน$นการื่เปรื่ ยบเที่ ยบ< <= > >=

เหลุ่�าน # แลุ่ะม ลุ่�าด�บการื่ที่�างานในกลุ่!�มเด ยวก�นจัากซั�ายไปขีวา

Page 12: เครื่องหมายและการดำเนินการในภาษาซี

12

ต่�วอย�าง 1

สมมต่$ i, j แลุ่ะk เป+นต่�วแปรื่จั�านวนเต่-มที่ �ม คื�า 1, 2 แลุ่ะ3

ต่ามลุ่�าด�บ ต่ารื่างต่�อไปน #เป+นน$พื่จัน'ที่ �สรื่�างจัากต่�วแปรื่เหลุ่�าน #นิ�พิจนิ, การื่แปลความหมาย ค�า

i < j(i + j) >= k

(j + k) > (i + 5)k != 3j == 2

จรื่�งจรื่�งเที1จเที1จจรื่�ง

11001

Page 13: เครื่องหมายและการดำเนินการในภาษาซี

13

logical operator คื�อ ต่�วด�าเน$นการื่ที่ �ใช้� ในการื่เปรื่ ยบเที่ ยบแลุ่ะต่�ดส$นใจั โดยเอาเง��อนไขี

ต่�#งแต่� 2 เง��อนไขีมาเปรื่ ยบเที่ ยบก�น ผลุ่ที่ �ได� จัากการื่เปรื่ ยบเที่ ยบจัะได�ผลุ่เป+น 2 กรื่ณ คื�อ

จรื่�งซี4�งให%ค�าเป-นิ 1 แลุ่ะ เที1จซี4�งให%ค�าเป-นิ 0 เช้�นเด ยวก�บต่�วด�าเน$นการื่เปรื่ ยบเที่ ยบ(relational operator) โดยต่�ว

ด�าเน$นการื่เช้$งต่รื่รื่กะ (logical operator) ม ด�งน #

ตั�วดำ�าเนิ�นิการื่เชิ�งตัรื่รื่กะ(logical operator)

Page 14: เครื่องหมายและการดำเนินการในภาษาซี

14

ตั�วดำ�าเนิ�นิการื่เชิ�งตัรื่รื่กะ(logical operator)

operator

การื่ที�างานิ

&& เอาสถานะที่�#งสองมาand ก�น

|| เอาสถานะที่�#งสองมาor ก�น

! not เปลุ่ �ยนสถานะให� ต่รื่งก�นขี�าม ( เป+น

unary operator)

operand! operand

เที่-จัจัรื่$ง เที่-จั

จัรื่$ง

Page 15: เครื่องหมายและการดำเนินการในภาษาซี

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));

Page 16: เครื่องหมายและการดำเนินการในภาษาซี

16

ตั�วดำ�าเนิ�นิการื่พิ�เศษ (special operator)

ตั�วดำ�าเนิ�นิการื่เพิ��ม/ลดำ (increment/decrement operator)

ตั�วดำ�าเนิ�นิการื่พิอยนิ,เตัอรื่, (pointer-related operators)

ตั�วดำ�าเนิ�นิการื่คอมม�า (comma operator) ตั�วดำ�าเนิ�นิการื่ก�าหนิดำชินิ�ดำ (cast operator) ตั�วดำ�าเนิ�นิการื่หาขนิาดำ (sizeof operator)

คื�อ ต่�วด�าเน$นการื่ที่ �อย)�นอกเหน�อจัากกลุ่!�มต่�วด�าเน$นการื่ ต่�างๆ ที่ �ได�กลุ่�าวมา ซั.�งปรื่ะกอบด�วย

Page 17: เครื่องหมายและการดำเนินการในภาษาซี

17

ตั�วดำ�าเนิ�นิการื่เพิ��ม/ลดำ (increment/decrement operator)

เป+นต่�วด�าเน$นการื่ส�าหรื่�บการื่เพื่$�มคื�าแลุ่ะการื่ลุ่ดคื�าในตั�วแปรื่คืรื่�#งลุ่ะหน.�ง

operator ชิ��อ การื่ที�างานิ++--

incrementdecrement

เพิ��มค�าข4*นิหนิ4�งลดำค�าลงหนิ4�ง

ซั.�งสามารื่ถน�าไปใช้�ก�บต่�วแปรื่ได� 2 ลุ่�กษณะคื�อ

Page 18: เครื่องหมายและการดำเนินการในภาษาซี

18

ซี4�งในิกรื่ณิ�นิ�*จะที�า operator ตั�วอ��นิก�อนิ แล%วจ4งจะ เพิ��มหรื่�อลดำค�าในิตั�วแปรื่

1. วางไว%หล�งตั�วแปรื่ เชิ�นิ i++ หรื่�อ i--

เช้�น count = 2;

i = count++;

ด�งน�#นจัะน�าคื�าในต่�วแปรื่ count ก�าหนดให�ก�บ i ก�อน

แลุ่�วจั.งเพื่$�มคื�าในต่�วแปรื่ count ขี.#นอ กหน.�ง จัะได� i ม คื�าเที่�าก�บ 2

count ม คื�าเที่�าก�บ 3

Page 19: เครื่องหมายและการดำเนินการในภาษาซี

19

2. วางไว%หนิ%าตั�วแปรื่ เชิ�นิ ++i หรื่�อ --i

เช้�น count = 2;

i = ++count;

ด�งน�#นจัะเพื่$�มคื�าในต่�วแปรื่ count ขี.#นอ กหน.�ง ก�อนจัะก�าหนดให�

ก�บต่�วแปรื่ i

จัะได� i ม คื�าเที่�าก�บ 3

count ม คื�าเที่�าก�บ 3

ซี4�งในิกรื่ณิ�นิ�*จะเพิ��มหรื่�อลดำค�าในิตั�วแปรื่ก�อนิ แล%วจ4งที�า operator ตั�วอ��นิ

Page 20: เครื่องหมายและการดำเนินการในภาษาซี

20

ใชิ%แบ�งแยกแตั�ละส�วนิ ภายในิstatement เดำ�ยวก�นิ

ตั�วอย�างเชิ�นิ int i = 5, j =6 , k;

  ตั�วดำ�าเนิ�นิการื่ คอมม�า (comma operators)

Page 21: เครื่องหมายและการดำเนินการในภาษาซี

21

เรื่าสามารื่ถูเปล��ยนิปรื่ะเภทีของข%อม&ลที��ไดำ%จาก นิ�พิจนิ,ไปเป-นิปรื่ะเภทีของข%อม&ลที��เรื่าตั%องการื่ไดำ%

โดำยใส�ชิ��อปรื่ะเภทีของข%อม&ลที��ตั%องการื่เอาไว%ในิวงเล1บก�อนิที��จะเข�ยนินิ�พิจนิ,นิ�*นิ

โดำยม�รื่&ปแบบ ค�อ

โดยคื�าว�า type เป+นช้��อช้น$ดขีองต่�วแปรื่ที่ �ต่�องการื่รื่ะบ!ให�แก�expression หรื่�อเที่อมขีองคื�าส��ง ซั.�ง expression อาจั

แที่นโดยต่�วแปรื่ได�โดยต่รื่ง

  ตั�วดำ�าเนิ�นิการื่ก�าหนิดำชินิ�ดำ (cast operator)

(type) expression;

Page 22: เครื่องหมายและการดำเนินการในภาษาซี

22

float cost=3.5; int mycost = cost; /* mycost ม คื�า

เที่�าก�บ 3 */ ขี�างต่�น ภาษา c จัะแปลุ่งช้น$ดขีองขี�อม)ลุ่ให�โดยอ�ต่โนม�ต่$

แต่�เรื่าก-สามารื่ถรื่ะบ!ให�ม การื่แปลุ่งช้น$ดต่ามที่ �เรื่าต่�องการื่โดยใช้�

casting operator เช้�น i = (int) 3.4 * 6;

i = (int) (3.4*6);

Page 23: เครื่องหมายและการดำเนินการในภาษาซี

23

Compound assignments

ในปรื่ะโยคืที่ �ม การื่ก�าหนดคื�าใหม�ให�ก�บต่�วแปรื่ โดยใช้�คื�าเด$มใน ต่�วแปรื่

ไปที่�าการื่คื�านวณ เช้�น

ในการื่ที่�างานลุ่�กษณะน # C ได�จั�ดเต่รื่ ยม operator ในกลุ่!�ม ที่ �เรื่ ยกว�า ที่ �เรื่ ยกว�า compound assignments เพื่��อ

ให�ผ)�ใช้�สามารื่ถเรื่ ยกใช้�ได�ง�ายขี.#น operator ในกลุ่!�มขีองcompound assignment ปรื่ะกอบด�วย

int i = 5;i = i + 5; /* i เที�าก�บ 10 */

คื�อ จัะม การื่น�าคื�าเด$มในต่�วแปรื่ i บวกด�วย 5 แลุ่�วน�าผลุ่ลุ่�พื่ธ์'ที่ �ได�ก�าหนดให�ต่�วแปรื่ i อ กคืรื่�#ง

Page 24: เครื่องหมายและการดำเนินการในภาษาซี

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;

Page 25: เครื่องหมายและการดำเนินการในภาษาซี

25

สรื่3ป ล�าดำ�บความส�าค�ญของoperator

ลุ่�าด�บคืวามส�าคื�ญน�อย

ลุ่�าด�บคืวามส�าคื�ญมากกล3�มของตั�วดำ�าเนิ�นิการื่ ตั�วดำ�าเนิ�นิการื่

ตั�วดำ�าเนิ�นิการื่ย&นิารื่� ค&ณิหารื่และหาเศษเหล�อ

บวกและลบตั�วดำ�าเนิ�นิการื่เปรื่�ยบเที�ยบตั�วดำ�าเนิ�นิการื่เที�ยบเที�าANDORตั�วดำ�าเนิ�นิการื่เง��อนิไขตั�วดำ�าเนิ�นิการื่ก�าหนิดำค�า

- ++ -- ! sizeof (type)* / %

+ -< <= > >=

== !=&&||? :

= += -= *= /= %=