Open top menu
วันอังคารที่ 8 ธันวาคม พ.ศ. 2558

                             

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




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

               ตัวดำเนินการ(Operator) ในการเขียนโปรแกรมภาษาซี มีอยู่ 3 ประเภทใหญ่ ๆ ดังนี้
                1)  ตัวคำนวณทางคณิตศาสตร์ (arithmetic operators)
                2)  ตัวดำเนินการทางตรรกะ (logical operator)
                3)  ตัวดำเนินการเปรียบเทียบ (relational operator)
                ซึ่งการดำเนินการแต่ละประเภทจะมีเครื่องหมายที่ต้องใช้เพื่อเขียนคำสั่ง สำหรับการดำเนินการประเภทนั้น ๆ ดังรายละเอียด
               ตัวคำนวณทางคณิตศาสตร์ (arithmetic operators)
                   เป็นตัวดำเนินการทางคณิตศาสตร์ ได้แก่ เครื่องหมายที่ใช้ในการบวก ลบ คูร หาร ตัวเลข และอื่น ๆ ดังตาราง
ตัวดำเนินการ
ความหมาย
ตัวอย่าง
+
การบวก
X + Y
-
การลบ
X - Y
*
การคูณ
X * Y
/
การหาร
X / Y
%
การหารจะเอาเฉพาะเศษไว้
11%3=3 เศษ 2 ดังนั้น 2 เป็นผลลัพธ์
- -
การลดค่าลงครั้งละ 1
X-- หรือ --X เหมือนกับ X=X-1
++
การเพิ่มค่าครั้งละ 1
X++ หรือ ++X เหมือนกับ X=X+1
ตารางแสดงตัวดำเนินการของภาษาซี

                   ขั้นตอนการทำงานของตัวดำเนินการในซี
                     ในบางครั้งนิพจน์ประกอบด้วยตัวดำเนินการมากมาย ทำให้เกิดความยุ่งยากในการพิจารณาขั้นตอนการทำงานของตัวดำเนินการ จึงได้ตั้งกฎเกี่ยวกับลำดับการทำงานก่อนหลังของตัวดำเนินการ (Operator) ดังตาราง
ตัวดำเนินการ
ตัวอย่าง
( )
1 (สูงสุด)
++   --   unary
2
*    /    %
3
+   -
4
+=     -=     *=     =     /=     %=
5 (ต่ำสุด)
ตารางแสดงลำดับการทำงานของตัวดำเนินการ

                       ตัวดำเนินการที่มีความสำคัญอยู่ในระดับเดียวกัน ให้ทำงานตามขั้นตอนจากซ้ายไปขวาเป็นหลัก  ดังตัวอย่างในตาราง
     ตัวอย่าง
     5 + 6 * 2
     ตัวดำเนินการ  *  อยู่ลำดับสูงกว่า  +  จึงต้องคูณเลข
      ก่อนแล้วบวก 5 ภายหลัง
     2  *  3  -  14/7  +  5
     ตัวดำเนินการ  *  และ  /  อยู่ลำดับเดียวกัน ให้ทำจาก
      ซ้ายไปขวา คือ คูณเลข แล้วหารเลข

     ตัวดำเนินการ  -  และ  +  อยู่ลำดับเดียวกัน ทำจาก
      ซ้ายมือก่อน คือ ลบเลข แล้วจึงบวกเลขในภายหลัง
ตารางแสดงลำดับการทำงานของตัวดำเนินการ

               ตัวคำนวณทางตรรกะ (logical operators)
                   เครื่องหมายรรกะ มีจุดประสงค์ใช้ในการเปรียบเทียบเพื่อตัดสินใจ   
                   เครื่องหมายตรรกะที่ใช้ในภาษาซี  มีดังนี้
เครื่องหมาย
ความหมาย
ตัวอย่าง
&&
และ
 x < 60 && x > 50  กำหนดให้  x  มีค่าในช่วง 50 ถึง 60
||
หรือ
 x = = 10 || x = = 15 กำหนดให้ x มีค่าเท่ากับตัวเลข 2 ค่า
 คือ  10  หรือ  15
!
ไม่
 x = 10  !x  กำหนดให้  x  ไม่เท่ากับ  10

                 ตัวคำนวณเปรียบเทียบ (relational operators)
                   ใช้เปรียบเทียบค่า 2 ค่า เพื่อแสดงการเลือก ซึ่งโปรแกรมโดยทั่วไปใช้ในการทดสอบ
เงื่อนไขตามที่กำหนด การเปรียบเทียบโดยการเท่ากันของ 2 ค่า จะใช้เครื่องหมาย ==
เครื่องหมาย
ความหมาย
ตัวอย่าง
>
มากกว่า
  a > b      a  มากกว่า  b
>==
มากกว่า หรือ เท่ากับ
  a >= b    a  มากกว่าหรือเท่ากับ  b
<
น้อยกว่า
  a < b      a  น้อยกว่า  b
<==
น้อยกว่า หรือ เท่ากับ
  a <= b    a  น้อยกว่าหรือเท่ากับ  b
==
เท่ากับ
  a == b      a  เท่ากับ  b
!=
ไม่เท่ากับ
  a != b      a  ไม่เท่ากับ  b

  นิพจน์ (Expression)
               นิพจน์(Expression) คือ  การนำตัวแปร ค่าคงที่ และตัวดำเนินการมาเขียนประกอบกัน โดยใช้เครื่องหมายอย่างใดอย่างหนึ่งเป็นตัวเชื่อม และเพื่อให้ตัวแปรภาษาสามารถเข้าใจและคำนวณหาผลลัพธ์ได้ตามที่เราต้องการ โดยมีกฎเกณฑ์ทั่ว ๆ ไปในการเขียนนิพจน์ของภาษาซี มีดังนี้
               1)  เขียนตัวอักษรหลายตัวติดกันได้โดยไม่มีเครื่องหมายคั่น เช่น  XY ถือเป็น 1 ตัวแปร
               2)  กรณีนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกันในนิพจน์เดียวกัน กลไกของภาษาซี จะเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น ดังนั้นจึงควรระวังในการตั้งตัวแปรเพื่อเก็บผลลัพธ์ที่ได้จากการดำเนินการของนิพจน์มีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกัน ซึ่งตัวแปรที่ตั้งขึ้น ควรเป็นชนิดของข้อมูลที่ใหญ่ที่สุดในนิพจน์นั้น ดังตัวอย่าง
                   หากนิพจน์มี  int  กับ  long  กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น  long
                   หากนิพจน์มี  int  กับ  double กลไกของภาษาซีจะเปลี่ยนชนิดของข้อมูลเป็น  double
         ตัวอย่างนิพจน์
นิพจน์ทางคณิตศาสตร์ตามปกติ
นิพจน์ทางคณิตศาสตร์ในภาษาซี
x + y - z
x + y - z
2xy + 4z
2 * x * y + 4 * z
x2 + 2x + 1
x * x + 2 * x + 1
2r
2 * r
(a - b) / (c - d)
b - 4ac
b * b - 4 * a * c
x * x / (x * y + 2)

cradit:http://www.krujintana.com