517 101
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

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


  • 94 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


5758929

517 101

LAB - 5_2

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


Operator

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

ตัวดำเนินการ (operator) คือเครื่องหมายที่ใช้เพื่อแสดงความหมายในการกระทำต่างๆ สามารถจัดกลุ่มได้ดังนี้

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

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

  • ตัวดำเนินการระดับบิต (bitwise operator)

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

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

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

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


5758929

  • ข้อมูลที่ทำงานกับตัวดำเนินการ เรียกว่า ตัวถูกดำเนินการ (operand) ตัวดำเนินการบางตัวต้องมีตัวถูกดำเนินการ 2 ตัว ในขณะที่บางตัวจะใช้ตัวถูกดำเนินการเพียงตัวเดียว โดยตัวดำเนินการทั้งหมดจะใช้ตัวถูกดำเนินการในการสร้างนิพจน์


Assignment operator

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

  • ตัวดำเนินการกำหนดค่าที่ใช้กันโดยทั่วไปคือ=

    โดยนิพจน์กำหนดค่าที่ใช้ตัวดำเนินการนี้เขียนได้ในรูปแบบดังนี้

  • โดยที่ identifier โดยทั่วไปจะเป็นตัวแปร และ expression จะเป็นค่าคงที่ ตัวแปร หรือนิพจน์ที่มีความซับซ้อนก็ได้

  • นิพจน์ทางขวามือ กำหนดค่า ให้กับตัวแปรทางซ้ายมือ

    เช่น x = 50;

identifier = expression


5758929

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

a = 3

x = y

delta = 0.001

sum = a + b

area = length * width

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

เช่น int i, j, k,cost,fee;

i = j = k = 100;

cost = fee=4*5;


Arithmetic operators

operator

ความหมาย

+

การบวก

-

การลบ และ unary operator

*

การคูณ

/

การหารซึ่งจะเป็นการหาผลลัพธ์จากการหาร

%

( modulo)

การหาเศษ(remainder) ที่เป็นจำนวนเต็มจากการหาร (operand ต้องเป็นจำนวนเต็มทั้งคู่)

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

เป็นตัวดำเนินการที่ทำให้เกิดการกระทำทางคณิตศาสตร์ประกอบด้วย


5758929

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

  • 4 + 3 * 2

    4 + 6

  • 9 * 2 - 15/3 + 7

    18 - 5 + 7

    13 + 7

    20


5758929

จงหาค่านิพจน์ต่อไปนี้

-(-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


Relational operator

เท็จ

เลข 0

เลขที่ไม่ใช่ 0

จริง

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

  • ใช้ในคำสั่งประเภทเงื่อนไข (condition statement) เช่น if

  • ใช้เปรียบเทียบตัวเลขเท่านั้น

  • การเปรียบเทียบ character string ต้องใช้ function เกี่ยวกับstring

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

หมายเหตุภาษา C จะไม่มีข้อมูลชนิด boolean (true หรือ false) แต่ใช้ค่าตัวเลข 0 และตัวเลขอื่น


5758929

operator

ความหมาย

>

มากกว่า

>=

มากกว่าหรือเท่ากับ

<

น้อยกว่า

<=

น้อยกว่าหรือเท่ากับ

==

เท่ากับ

!=

ไม่เท่ากับ

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

ข้อควรระวัง

operator == ใช้ในการเปรียบเทียบ

ส่วน = ใช้กำหนดค่าให้ตัวแปร

 เราสามารถตรวจสอบค่าได้ดังนี้

printf(“value of true = %d “, 5==5); /* ใน turbo c จะแสดงค่า 1 */

printf(“value of false = %d”, 5!=5);


5758929

  • < <= > >= ตัวดำเนินการเหล่านี้มีลำดับความสำคัญเท่ากัน แต่มีลำดับความสำคัญต่ำกว่าตัวดำเนินการเลขคณิต โดยลำดับการทำงานในกลุ่มเดียวกันนั้นจะทำจากซ้ายไปขวา

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


5758929

ตัวอย่าง 1

  • สมมติ i, j และk เป็นตัวแปรจำนวนเต็มที่มีค่า 1, 2 และ3

    ตามลำดับ ตารางต่อไปนี้เป็นนิพจน์ที่สร้างจากตัวแปรเหล่านี้


Logical operator

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

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


Logical operator1

operator

การทำงาน

&&

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

||

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

! operand

operand

!

not เปลี่ยนสถานะให้ตรงกันข้าม (เป็น unary operator)

เท็จ

จริง

จริง

เท็จ

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


Operator1

OP1

OP2

OP1 && OP2

OP1 || OP2

เท็จ

เท็จ

เท็จ

เท็จ

เท็จ

จริง

เท็จ

จริง

จริง

เท็จ

เท็จ

จริง

จริง

จริง

จริง

จริง

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

หมายเหตุค่าของ 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));


Special operator

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

คือ ตัวดำเนินการที่อยู่นอกเหนือจากกลุ่มตัวดำเนินการ

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

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

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

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

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

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


5758929

ตัวดำเนินการเพิ่ม/ลด

(increment/decrement operator)

  • เป็นตัวดำเนินการสำหรับการเพิ่มค่าและการลดค่าในตัวแปรครั้งละหนึ่ง

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


5758929

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

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

เช่น count = 2;

i = count++;

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

แล้วจึงเพิ่มค่าในตัวแปร count ขึ้นอีกหนึ่ง

จะได้ i มีค่าเท่ากับ 2

count มีค่าเท่ากับ 3


2 i i

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

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

เช่น count = 2;

i = ++count;

ดังนั้นจะเพิ่มค่าในตัวแปร count ขึ้นอีกหนึ่ง ก่อนจะกำหนดให้

กับตัวแปร i

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

count มีค่าเท่ากับ 3


Comma operators

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

  • ใช้แบ่งแยกแต่ละส่วน ภายใน statement เดียวกัน

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


5758929

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

  • เราสามารถเปลี่ยนประเภทของข้อมูลที่ได้จากนิพจน์ไปเป็นประเภทของข้อมูลที่เราต้องการได้ โดยใส่ชื่อประเภทของข้อมูล

    ที่ต้องการเอาไว้ในวงเล็บก่อนที่จะเขียนนิพจน์นั้นโดยมีรูปแบบ คือ

  • โดยคำว่า type เป็นชื่อชนิดของตัวแปรที่ต้องการระบุให้แก่ expression หรือเทอมของคำสั่ง ซึ่ง expression อาจแทนโดยตัวแปรได้โดยตรง

(type) expression;


5758929

float cost=3.5;

int mycost = cost;/* mycost มีค่าเท่ากับ 3 */

ข้างต้น ภาษา c จะแปลงชนิดของข้อมูลให้โดยอัตโนมัติ

แต่เราก็สามารถระบุให้มีการแปลงชนิดตามที่เราต้องการ โดยใช้

casting operator เช่น

i = (int) 3.4 * 6;

i = (int) (3.4*6);


Compound assignments

Compound assignments

  • ในประโยคที่มีการกำหนดค่าใหม่ให้กับตัวแปร โดยใช้ค่าเดิมในตัวแปร

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

  • ในการทำงานลักษณะนี้ C ได้จัดเตรียม operator ในกลุ่มที่เรียกว่า ที่เรียกว่า compound assignments เพื่อให้ผู้ใช้สามารถเรียกใช้ได้ง่ายขึ้น operator ในกลุ่มของ compound assignment ประกอบด้วย

int i = 5;

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

คือ จะมีการนำค่าเดิมในตัวแปร i บวกด้วย 5

แล้วนำผลลัพธ์ที่ได้กำหนดให้ตัวแปร i อีกครั้ง


Compound assignments1

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;

ตารางตัวอย่างการใช้ compound assignments


Operator2

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

ลำดับความสำคัญมาก

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


  • Login