นิพจน์และตัวดำเนินการ

คำนำ
นิพจน์เป็นองค์ประกอบพื้นฐาน ที่สร้างประโยคเชิงซ้อนในภาษาซี ขึ้นมา นิพจน์ประกอบไปด้วยตัวแปรและตัวดำเนินการ ภาษาซีมีตัวดำเนินการหลายประเภทเพื่อทำหน้าที่แตกต่างกัน ได้แก่
ต่อไปนี้จะกล่าวถึงตัวดำเนินการต่างๆ โดยละเอียด


ตัวดำเนินการคณิตศาสตร์
ได้แก่
นักศึกษาลองเขียนโปรแกรมคำนวณผลจากการดำเนินการหาร 10 / 3 = ? ในภาษาซี นั้น 10.0 / 3.0 จะไม่เท่ากับ 10 / 3 ลองทำดู


ตัวดำเนินการกำหนดค่า
เป็นตัวดำเนินการในการใส่ค่าตัวเลขแก่ตัวแปร เช่น
            i  =   6    ;
            x  =   y    =   6   ;
นอกจากนั้นยังมีตัวกำหนดค่าอื่นๆ อีก คือ
ตัวอย่างการใช้งานเช่น   i +=3 มีความหมายเดียวกับ   i = i + 3

นักศึกษาลองเขียนโปรแกรมใช้งานตัวดำเนินการ +=   -=   *=   และ /=


ตัวดำเนินการแบบยูนารี
เป็นตัวดำเนินการที่ต้องการตัวถูกดำเนินการเพียงตัวเดียวเท่านั้น ได้แก่ ++ และ -- เช่น

i++ มีความหมายเดียวกันกับ i + 1
i-- มีความหมายเดียวกันกับ i - 1

ลำดับการใช้งานของตัวดำเนินการแบบยูนารีมีความสำคัญ เราสามารถวางตัวดำเนินการแบบยูนารีไว้ข้างหน้า หรือ ข้างหลัง ตัวถูกดำเนินการก็ได้ ซึ่งจะให้ผลแตกต่างกัน ลองเขียนโปรแกรมข้างล่างนี้

โปรแกรมที่ 1 ตัวดำเนินการยูนารี

# include <stdio.h>

main()
{
   int      i , j  ;
   int      x, y ;

   i = j = 1 ;

  x = i-- + 1 ;
  y = --j + 1 ;

  printf("i = %d and j = %d \n",i,j) ;
  printf("x = %d and y = %d \n",x,y) ;
  return 0 ;
}


ตัวดำเนินการเชิงตรรก และ ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบใช้เพื่อเปรียบเทียบค่าสองค่า เพื่อให้ผลเป็นค่าตรรกะคือ จริง หรือ เท็จ โดยผลจากการดำเนินการจะเป็นเลขจำนวนเต็ม คือ หากได้ 1 หมายถึง จริง และ 0 หมายถึง เท็จ ตัวดำเนินการเปรียบเทียบก็ได้แก่
จงลองเขียนโปรแกรมข้างล่างนี้ เพื่อทดสอบการใช้งานตัวดำเนินการเปรียบเทียบ

โปรแกรมที่ 2 การใช้งานตัวดำเนินการเปรียบเทียบ

# include <stdio.h>

main()
{
    int   i = 1 , j = 2 , k = 3 ;

   printf(" The value of  i < j   is  %d \n", i < j) ;
   printf(" The value of (k-i) >  j is %d \n",(k-i) > j) ;
   printf(" The value of (i+j)==k is %d \n", (i+j)==k) ;
}

ตัวดำเนินการเชิงตรรกในภาษาซีมีอยู่ 3 ตัวได้แก่

โปรแกรมที่ 3 การใช้งานตัวดำเนินการเปรียบเทียบและตัวดำเนินการเชิงตรรก
# include <stdio.h>

main( )
{
     int  i = 1 , j =2 , k = 3 ;

     printf("The value of (j > i) && (k > i) is %d  \n",(j > i) && (k > i)) ;
     printf("The value of (j > i) || (k > i) is %d \n", (j > i) || (k > i)) ;
     printf("The value of !(j > i) && (k > i) is %d \n", (j > i) && (k > i)) ;
     printf("The value of !(j > i) || (k > i) is %d \n", !(j > i) || (k > i)) ;
     return 0 ;
}


กลับไปสารบัญ