25
เเเเเเเเเเเเเเเเเ เเเเเเเเเเเเเเเเเเ

C lab5 2

Embed Size (px)

Citation preview

Page 1: C lab5 2

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

Page 2: C lab5 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: C lab5 2

3

ขอมลททำางานกบตวดำาเนนการ เรยกวา ตวถกดำาเนนการ (operand) ตวดำาเนนการบางตวตองมตวถกดำาเนนการ 2 ตว ในขณะทบางตวจะใชตวถกดำาเนนการเพยงตวเดยว โดยตวดำาเนนการทงหมดจะใชตวถกดำาเนนการในการสรางนพจน

Page 4: C lab5 2

4

ตวดำาเนนการกำาหนดคา (assignment operator)

ตวดำาเนนการกำาหนดคาทใชกนโดยทวไปคอ = โดยนพจนกำาหนดคาทใชตวดำาเนนการนเขยนไดในรปแบบดงน

โดยท identifier โดยทวไปจะเปนตวแปร และ expression จะเปนคาคงท ตวแปร หรอนพจนทมความซบซอนกได

นพจนทางขวามอ กำาหนดคา ใหกบตวแปรทางซายมอ

เชน x = 50;

identifier = expression

Page 5: C lab5 2

5

ในหนงประโยค สามารถใชตวดำาเนนการ = ไดหลายตว

เชน int i, j, k,cost,fee; i = j = k = 100; cost = fee=4*5;

a = 3x = ydelta = 0.001sum = a + barea = length * width

ตวอยาง นพจนกำาหนดคาทใชตวดำาเนนการ =

Page 6: C lab5 2

6

ตวดำาเนนการเลขคณต (arithmetic operators)

เปนตวดำาเนนการททำาใหเกดการกระทำาทางคณตศาสตร ประกอบดวย

operator

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

- การลบ และ unary operator* การคณ

/ การหาร ซงจะเปนการหาผลลพธจากการหาร%

( modulo)

การหาเศษ(remainder) ทเปนจำานวนเตม จากการหาร (operand ตองเปนจำานวนเตมทงค)

Page 7: C lab5 2

7

ตวอยาง แสดงขนตอนการทำางานของตวดำาเนนการ

4 + 3 * 2 4 + 6

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

20

Page 8: C lab5 2

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: C lab5 2

9

ตวดำาเนนการเปรยบเทยบ(relational operator)

ใชในคำาสงประเภทเงอนไข (condition statement) เชน if

ใชเปรยบเทยบตวเลขเทานน การเปรยบเทยบ character string ตองใช

function เกยวกบstring ผลลพธจากการเปรยบเทยบ อาจจะเปนเทจ (มคา

เทากบ 0) หรอ จรง (มคาเทากบ 1 หรอมคาใดๆทไมเทากบ 0)

หมายเหต ภาษา C จะไมม ขอมลชนด boolean

(true หรอ false) แตใชคาตวเลข 0 และตวเลขอน

เทจ

จรงเลขทไมใช 0

เลข 0

Page 10: C lab5 2

10

operator

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

>= มากกวาหรอเทากบ< นอยกวา

<= นอยกวาหรอเทากบ== เทากบ

!= ไมเทากบ

ตวดำาเนนการเปรยบเทยบ ในภาษา c

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

ขอควรระวงoperator == ใชใน

การเปรยบเทยบ สวน = ใชกำาหนดคาให

ตวแปร

Page 11: C lab5 2

11

< <= > >= ตวดำาเนนการเหลานม

ลำาดบความสำาคญเทากน แตมลำาดบความสำาคญตำากวาตวดำาเนนการเลขคณต โดยลำาดบการทำางานในกลมเดยวกนนนจะทำาจากซายไปขวา

== != ตวดำาเนนการเทยบเทา(equality operator) สองตวนมลำาดบความสำาคญเทากน แตตำากวาตวดำาเนนการเปรยบเทยบ< <= > >= เหลาน และมลำาดบการทำางานในกลมเดยวกนจากซายไปขวา

Page 12: C lab5 2

12

ตวอยาง 1 สมมต i, j และk เปนตวแปรจำานวนเตมทมคา 1,

2 และ3 ตามลำาดบ ตารางตอไปนเปนนพจนทสรางจาก

ตวแปรเหลานนพจน การแปลความหมาย คาi < j

(i + j) >= k(j + k) > (i + 5)

k != 3j == 2

จรงจรงเทจเทจจรง

11001

Page 13: C lab5 2

13

logical operator คอ ตวดำาเนนการทใชในการเปรยบเทยบและตดสนใจ โดยเอาเงอนไขตงแต 2 เงอนไขมาเปรยบเทยบกน ผลทไดจากการเปรยบเทยบจะไดผลเปน 2 กรณ คอ จรงซงใหคาเปน 1 และเทจซงใหคาเปน 0 เชนเดยวกบตวดำาเนนการเปรยบเทยบ(relational operator) โดยตวดำาเนนการเชงตรรกะ (logical operator) มดงน

ตวดำาเนนการเชงตรรกะ (logical operator)

Page 14: C lab5 2

14

ตวดำาเนนการเชงตรรกะ (logical operator)

operator

การทำางาน

&& เอาสถานะทงสองมาand กน

|| เอาสถานะทงสองมาor กน

! not เปลยนสถานะให ตรงกนขาม ( เปน

unary operator)

operand! operandเทจจรง เทจ

จรง

Page 15: C lab5 2

15

ตารางคาความจรงของ operator && และ || OP1

OP2 OP1 && OP2

OP1 || OP2เทจ เทจ เทจ เทจ

เทจ จรง เทจ จรงจรง เทจ เทจ จรงจรง จรง จรง จรง

หมายเหต คาของ operand ถาเปน 0 ถอวา เทจ สวนคาอนๆท ไมใช 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: C lab5 2

16

ตวดำาเนนการพเศษ (special operator)

ตวดำาเนนการเพม/ลด (increment/decrement operator)

ตวดำาเนนการพอยนเตอร (pointer-related operators)

ตวดำาเนนการคอมมา (comma operator)

ตวดำาเนนการกำาหนดชนด (cast operator)

ตวดำาเนนการหาขนาด (sizeof operator)

คอ ตวดำาเนนการทอยนอกเหนอจากกลมตวดำาเนนการ

ตางๆ ทไดกลาวมา ซงประกอบดวย

Page 17: C lab5 2

17

ตวดำาเนนการเพม/ลด (increment/decrement operator)

เปนตวดำาเนนการสำาหรบการเพมคาและการลดคาในตวแปรครงละหนง

operator ชอ การทำางาน++--

incrementdecrement

เพมคาขนหนงลดคาลงหนง

ซงสามารถนำาไปใชกบตวแปรได 2 ลกษณะคอ

Page 18: C lab5 2

18

ซงในกรณนจะทำา operator ตวอนกอน แลวจงจะ เพมหรอลดคาในตวแปร

1. วางไวหลงตวแปร เชน i++ หรอ i--

เชน count = 2; i = count++;

ดงนนจะนำาคาในตวแปร count กำาหนดให กบ i กอน

แลวจงเพมคาในตวแปร count ขนอกหนง จะได i มคาเทากบ 2 count มคาเทากบ 3

Page 19: C lab5 2

19

2. วางไวหนาตวแปร เชน ++i หรอ --i

เชน count = 2; i = ++count;

ดงนนจะเพมคาในตวแปร count ขนอกหนง กอนจะกำาหนดให

กบตวแปร i จะได i มคาเทากบ 3

count มคาเทากบ 3

ซงในกรณนจะเพมหรอลดคาในตวแปรกอน แลวจงทำา operator ตวอน

Page 20: C lab5 2

20

ใชแบงแยกแตละสวน ภายใน statement เดยวกน

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

  ตวดำาเนนการคอมมา (comma operators)

Page 21: C lab5 2

21

เราสามารถเปลยนประเภทของขอมลทไดจากนพจนไปเปนประเภทของขอมลทเราตองการได โดยใสชอประเภทของขอมลทตองการเอาไวในวงเลบกอนทจะเขยนนพจนนน โดยมรปแบบ คอ

โดยคำาวา type เปนชอชนดของตวแปรทตองการระบใหแก expression หรอเทอมของคำาสง ซง expression อาจแทนโดยตวแปรไดโดยตรง

  ตวดำาเนนการกำาหนดชนด (cast operator)

(type) expression;

Page 22: C lab5 2

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: C lab5 2

23

Compound assignments

ในประโยคทมการกำาหนดคาใหมใหกบตวแปร โดยใชคาเดมในตวแปร

ไปทำาการคำานวณ เชน

ในการทำางานลกษณะน C ไดจดเตรยม operator ในกลมทเรยกวา ทเรยกวา compound assignments เพอใหผใชสามารถเรยกใชไดงายขน operator ในกลมของ compound assignment ประกอบดวย

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

คอ จะมการนำาคาเดมในตวแปร i บวกดวย 5 แลวนำาผลลพธทไดกำาหนดใหตวแปร i อกครง

Page 24: C lab5 2

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: C lab5 2

25

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

ลำาดบความสำาคญนอย

ลำาดบความสำาคญมากกลมของตวดำาเนนการ ตวดำาเนนการ

ตวดำาเนนการยนาร คณหารและหาเศษเหลอ

บวกและลบตวดำาเนนการเปรยบเทยบตวดำาเนนการเทยบเทาANDORตวดำาเนนการเงอนไขตวดำาเนนการกำาหนดคา

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

+ -< <= > >=

== !=&&||? :

= += -= *= /= %=