หน่วยที่ 3 ประเภทของข้อมูล ตัวดำเนินการ และนิพจน์

          ชนิดของข้อมูล (data type)

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

  • จํานวนเต็ม ได้เแก่ข้อมูลชนิด int, short, long, unsigned int, unsigned short และ unsigned long
  • จํานวนจริง คือ ข้อมูลที่เป็นเลขจํานวนจริง มีทศนิยม หรืออยู่ในรูปของนิพจน์วิทยาศาสตร๋ ได้แก่ขัอมูลชนิด float และ double
  • ตัวอักขระหรือสตริง (String) ได้แก่ข้อมูลชนิด char ซึ่งเก็บข้อมูลได้ 1 อักขระ และข้อมูลที่เป็นชุดของข้อมูล char (Array of char) ที่ใช้เก็บสตริงซึ่งจะกล่าวถึงในบทต่อไป เรื่องตัวแปรชุด (Array) หมายเหตุ -สตริง จะเขียนอยู่ในเครื่องหมาย “ เช่น “Hello” โดยที่ในสตริงทุกตัวจะมีอักขระพิเศษที่ไม่สามารถมองเห็นคือ ‘\0’ หรือ NULL เป็นตัวสุดท้ายเสมอ

ตัวอย่างโปรแกรม การใช้ค่าของตัวแปรชนิดตัวอักขระและสตริง [ char ]

#include <stdio.h>
void main( )

{
int no;
char ch;
ch = 'S';
printf("char : %c, dec : %d, oct : %o, hex : %x", ch, ch, ch, ch);
no = ch;
printf("\nno : %d, ch : %c", no, ch);
no = 88;
ch = no;
printf("\nno : %d, ch : %c", no, ch);


          ตัวดําเนินการ (Operators)

  1. ตัวดําเนินการคณิตศาสตร (Arithmetic Operators) เป็นตัวดำเนินการที่คำนวณทางด้านคณิตศาสตร์ให้มีค่าออกมามีชนิดสอดคล้องกับชนิดของตัวถูกกระทำ 
      
     
  2. ตัวดําเนินการกำหนดค่า (Assignment Operator) ใช้ในการกำหนดค่าต่าง ๆ ให้กับตัวแปร ใช้เครื่องหมาย  ]
     
    หมายเหตุ ตัวดําเนินการกำหนดค่า ได้แก่ กำหนดค่าแบบผสม (Compound Assignment Operators) เป็นตัวดำเนินการที่ผสมระหว่างตัวดำเนินการกำหนดค่าและตัวดำเนินการคณิตศาสตร์ 
                                   
  3. ตัวดําเนินการเพิ่มค่าและลดค่า (Increment and Decrement Operators) 
     
      - ตัวดำเนินการเพิ่มค่าใช้เพิ่มค่าตัวแปรขึ้น 1 ใช้เครื่องหมาย ++
      - ตัวดำเนินการลดค่าใช้ลดค่าตัวแปรลง 1 ใช้เครื่องหมาย  - - 
    ตัวอย่าง ความแตกต่างระหว่าง n++ และ ++n  
             สมมติ n = 5;     ให้  x  = n++;   จะได้ค่า x เท่ากับ 5 แล้วค่า n เท่ากับ 6
                                 แต่ถ้า  x  = ++n;   จะได้ค่า x เท่ากับ 6 
     
  4. ตัวดําเนินการความสัมพันธ์ (Relational Operators) อยู่ในกลุ่มตัวดำเนินการเปรียบเทียบใช้ในการเปรียบเทียบและตัดสินใจ ซี่งผลของการเปรียบเทียบจะเป็นได้ 2 กรณีเท่านั้นคือ จริงและเท็จ
     
     
  5. ตัวดําเนินการความเท่ากัน (Equality Operators) อยู่ในกลุ่มตัวดำเนินการเปรียบเทียบใช้ในการเปรียบเทียบค่า 2 ค่า ว่ามีค่าเท่า หรือไม่เท่ากัน ผลลัพธ์ที่ได้ จะมีเพียง 2 ค่า คือ จริง และ เท็จ
     
     
  6. ตัวดําเนินการเงื่อนไข (Conditional Operator) เป็นตัวกระทำใช้ในการเลือกการให้ค่าของนิพจน์ ตัวกระทำชนิดนี้ประกอบไปด้วยเครื่องหมาย ? และ นิพจน์เลือกค่า (Condition Expressions) 
              ตัวอย่าง          min = (a < b) ? a : b;     ใช้ตรวจสอบเงื่อนไขของนิพจน์ 
              รูปแบบ            นิพจน์1 ? นิพจน์2 : นิพจน์3
               การประมวลผลจะตรวจสอบนิพจน์1 ว่าเป็นจริงหรือเท็จ  หากเป็นจริงจะทำงานในนิพจน์2
    แต่หากเป็นเท็จจะทำงานในนิพจน์3 
              ตัวอย่างโปรแกรม 
               #include  <stdio.h>
                void  main( ) {
                     int  x, y;
                      printf("Enter X : ");
                      scanf("%d", &x);
                      printf("Enter Y : ");
                      scanf("%d", &y);
                      (x > y) ? printf("X more than Y") : printf("X not more than Y");
                        } 
  7. ตัวดําเนินการตรรกะ (Logical Operators)
     
    หมายเหตุ นิเสธ [Not] คือ การกลับค่า จะให้ผลลัพธ์เป็นจริงเมื่อเงื่อนไขหลัง not เป็นเท็จ แต่ถ้าเงื่อนไขหลัง not เป็นจริงจะทำให้ผลลัพธ์เป็นเท็จ
     
     
     

        หมายเหตุ ตัวดําเนินการตรรกะ (Logical Operators) สามารถเขียนสรุปรวมได้ดังนี้


          *** แนะนำเพิ่มเติม ***

          แนะนำเว็บอธิบาย 1.เว็บตัวดำเนินการเพิ่มเติม หรือ 2.เว็บตัวดำเนินการเพิ่มเติม(ซ้ำ) ตัวอย่างเช่น การใช้คอมมา (Comma) บอกถึงลำดับการทำงาน และช่วยในการกำหนดการทำงานของนิพจน์ มักจะใช้ร่วมกับคำสั่งควบคุม สำหรับการทำงานของคอมมาจะทำงานที่นิพจน์ทางซ้ายมือก่อนเสมอแล้วจึงทำงานที่นิพจน์ขวามือ  รูปแบบ   นิพจน์1   ,   นิพจน์2  ตัวอย่างเช่น    sum = 0,  k = 1