ตัวแปร (Variable) คือ การจองพื้นที่ในหน่วยความจำของคอมพิวเตอร์ การตั้งชื่อตัวแปรและค่าคงที่ในภาษา C จำเป็นต้องคำนึงถึงกฎเกณฑ์ต่างๆ ดังต่อไปนี้ คำสงวน (Reserved Word) หมายถึง คำที่สงวนไว้สำหรับเรียกใช้ตามวัตถุประสงค์ที่กำหนดโดยเฉพาะ เช่น คำที่ใช้ในคำสั่งควบคุม และชนิดของข้อมูล เป็นต้น ตัวอย่างคำสงวนของภาษาซี มีดังต่อไปนี้ auto default float register struct break do for return switch case double goto short typefef char else if signed union const enum int sizeof void continue extern long static whiteหากต้องการตั้งชื่อตัวแปรให้ตรงกับคำสงวน ก็สามารถทำได้โดยการนำอักษรตัวพิมพ์ใหญ่ หรือเครื่องหมาย _ เข้ามาร่วม เช่น auto เป็น Auto , int เป็น _int เป็นต้น ตัวอย่าง ของชื่อตัวแปร ที่สามารถนำมาใช้ตั้งชื่อได้ ยกตัวอย่างเช่น n month MONTH _var1 length EmpID days_in_year Do S001 first_one salary num1ตัวอย่าง ของชื่อตัวแปร ที่ไม่สามารถนำมาใช้เป็นชื่อตัวแปรได้ ยกตัวอย่างเช่น int do 123num *variable float 1 dataการเขียนโปรแกรมคอมพิวเตอร์นั้น มีความจำเป็นอย่างยิ่งที่จะต้องจัดการกับข้อมูลประเภทต่าง ๆ เพื่อให้งานนั้นๆ สามารถจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพและสะดวกต่อการค้นหาข้อมูล ดังนั้นในภาษาซี จึงแบ่งประเภทของข้อมูลออกได้เป็น 6 ประเภทด้วยกันคือ 1. ข้อมูลชนิดเลขจำนวนเต็ม (Integer) คือ เลขจำนวนเต็มทั่วไป ไม่ว่าจะเป็นเลขจำนวนเต็มบวก จำนวนเต็มศูนย์และจำนวนเต็มลบ ซึ่งเลขจำนวนเต็มเหล่านี้ สามารถนำไปคำนวณได้ ตัวอย่าง เช่น 100, 56, 0, -20 เป็นต้น ซึ่งภาษาซีจะแบ่งข้อมูลชนิดนี้ออกได้เป็น 3 ประเภท คือ 2. ข้อมูลชนิดตัวเลขทศนิยม (Float) คือ เลขทศนิยมชนิดคงที่ หรืออาจจะเป็นทศนิยม แบบไม่รู้จบ หรืออาจจะเป็นเลขทศนิยมที่เขียนในรูป E (หรือ e) ยกกำลัง ตัวเลขทศนิยมเหล่านี้ สามารถนำมาใช้ในการคำนวณได้ ตัวอย่าง เลขทศนิยมนี้ได้แก่ 20.25, -0.60, 58.96, 5.40e04 เป็นต้น แบ่งออกเป็น 3 ประเภท คือ 3. ข้อมูลชนิดเลขฐานแปด (Octal) คือ เลขจำนวนเต็มที่ประกอบด้วยเลข 0, 1 ,2, 3, 4, 5, 6 และ 7 เมื่อนำมาใช้ในภาษาซี จะต้องเขียนเลขศูนย์นำหน้า เช่น 0123, 045 เป็นต้น ซึ่งเลขฐานแปด เหล่านี้สามารถนำมาใช้เพื่อการคำนวณได้ 4. ข้อมูลชนิดเลขฐานสิบหก (Hexadecimal) คือ ตัวเลขประเภทหนึ่งที่ใช้ในระบบคอมพิวเตอร์ ซึ่งประกอบด้วย 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e และ f เวลาใช้งานในภาษาซีจะต้องเขียนด้วย 0x นำหน้าเพื่อให้รู้ว่าตัวเลขที่นำมาใช้งานนั้นเป็นฐานสิบหก 5. ข้อมูลชนิดตัวอักขระ (Character) เป็นตัวอักษรหรือสัญลักษณ์อื่น ๆ ที่มีความยาว เพียง 1 ตัวอักษรเท่านั้น ซึ่งอาจจะเป็นตัวอักษร A-Z, a-z, 0-9 หรือ #, @, $ และอื่น ๆ เป็นต้น โดยจะเขียนไว้ในเครื่องหมาย ' ' (Single Quote) ตัวอักขระทั้งหมดนั้น สามารถศึกษาหรือดู รายละเอียดเพิ่มเติมได้จากตารางรหัส ASCII 6. ข้อมูลชนิดข้อความ (String) เป็นข้อมูลแบบตัวอักษรที่มีความยาวมากกว่า 1 ตัวอักษร มาเรียงต่อกันเป็นข้อความ โดยที่ข้อความนั้นจะต้องถูกเขียนไว้ในเครื่องหมาย " " (Double Quote) ตัวอย่างเช่น "Phitsanulok", "Welcome" เป็นต้น ตัวแปรที่ประกาศใช้งานในโปรแกรม จำเป็นต้องถูกระบุชนิดข้อมูลเพื่อให้ทราบว่าตัวแปรเหล่านั้นจัดเก็บข้อมูลชนิดใดลงไป สำหรับในภาษา C จะมีข้อมูลพื้นฐานที่นิยมใช้ คือ ชนิดข้อมูลความหมาย charชนิดข้อมูลแบบตัวอักษร (Character) intชนิดข้อมูลแบบเลขจำนวนเต็ม (integer) floatข้อมูลชนิดตัวเลขจำนวนจริง(ทศนิยม) (read or floating point) doubleข้อมูลชนิดเลขจำนวนจริง 2 เท่า (double precision float)นอกจากนี้ ยังสามารถเพิ่มเครื่องหมายนำหน้าให้กับชนิดข้อมูลเหล่านี้ได้อีก โดยรายละเอียดของชนิดข้อมูลแต่ละประเภท ดังนี้ 4-32,768 to 32,767 2,147,483,648 to 2,147,483,647unsigned intเลขจำนวนเต็ม ไม่รวมเครื่องหมาย2 40 to 65535 0 to 4294967unsigned long intเลขจำนวนเต็มแบบยาว ไม่รวมเครื่องหมาย40 to 65535 0 to 4294967unsigned short intเลขจำนวนเต็มแบบสั้น ไม่รวมเครื่องหมาย20 to 65535signed intเลขจำนวนเต็ม รวมเครื่องหมาย2-32,768 to 32,767short intเลขจำนวนเต็มแบบสั้น2-32,768 to 32,767long intเลขจำนวนเต็มแบบยาว42,147,483,648 to 2,147,483,647signed short intเลขจำนวนเต็มแบบสั้น รวมเครื่องหมาย2-32,768 to 32,767signed long intเลขจำนวนเต็มแบบยาว รวมเครื่องหมาย42,147,483,648 to 2,147,483,647floatเลขจำนวนจริง มีทศนิยม41.2E-38 to 3.4E+38 (6 decimal places)doubledเลขจำนวนจริง 2 เท่า82.3E-308 to 1.7E+308 (15 decimal places)long doubledเลขจำนวนจริง 2 เท่าแบบยาว102.3E-4932 to 1.1E+4932 (19 decimal places) จากตาราง เป็นชนิดข้อมูลในภาษา C (ขนาดข้อมูลอาจไม่ตรงกัน ขึ้นอยู่กับแต่ละคอมไพเลอร์) โดยที่ data_type คือ ชนิดข้อมูล ตัวอย่าง การประกาศตัวแปร char a;ประกาศตัวแปร a เก็บข้อมูลตัวอักษร 1 ตัว char lastname[50];ประกาศตัวแปร lastname เก็บข้อความ 50 ตัว int num1;ประกาศตัวแปร num ให้มีชนิดข้อมูลเป็นเลขจำนวนเต็ม float total;ประกาศตัวแปร total ให้มีชนิดข้อมูลเป็นเลขจำนวนจริงการประกาศชนิดให้กับตัวแปร ควรคำนึงถึงความเหมาะสม ตัวอย่างเช่น หากต้องการใช้งานเลขจำนวนเต็มที่มีช่วงตัวเลขไม่กว้าง การเลือกใช้ short int จะเหมาะสมกว่า long int เพราะช่วยประหยัดหน่วยความจำ นอกจากนี้การสร้างสูตรคำนวณที่ประกอบไปด้วยตัวแปรชนิดข้อมูลที่ต่างกัน ตัวแปรที่ใช้เก็บผลลัพธ์จะต้องเป็นชนิดที่ใหญ่กว่าเสมอ เช่น นิพจน์ที่เป็น int มาคำนวณกับนิพจน์ที่เป็น float ตัวแปรที่ใช้เก็บผลลัพธ์ก็ต้องเป็น float การกำหนดค่าให้กับตัวแปร จะต้องกำหนดให้เป็นไปตามกฎและต้องสัมพันธ์กับชนิดข้อมูลที่ประกาศไว้ เช่น หากกำหนดตัวแปรเป็นชนิดข้อมูล int ค่าที่กำหนดให้กับตัวแปรก็จะต้องเป็นเลขจำนวนเต็มเท่านั้น ไม่สามารถกำหนดเป็นเลขทศนิยมหรือข้อความได้ 1. การกำหนดค่าชนิดเลขจำนวนเต็ม ตัวอย่าง การกำหนดค่าให้กับตัวแปร เพื่อจัดเก็บเลขจำนวนเต็มในรูปแบบต่างๆ n1 = 445;ประกาศตัวแปร a เก็บข้อมูลตัวอักษร 1 ตัว n2 = +557;ประกาศตัวแปร lastname เก็บข้อความ 50 ตัว n3 = -6687;ประกาศตัวแปร num ให้มีชนิดข้อมูลเป็นเลขจำนวนเต็ม n4 = 123456789L;ประกาศตัวแปร total ให้มีชนิดข้อมูลเป็นเลขจำนวนจริง n5 = 1234U;ชนิดข้อมูลเป็น unsigned int n6 = 123456789UL;ชนิดข้อมูลเป็น unsigned long int2. การกำหนดค่าให้กับตัวแปรชนิดเลขจำนวนจริง ตัวอย่าง การกำหนดค่าให้กับตัวแปร เพื่อจัดเก็บเลขจำนวนเต็มในรูปแบบต่างๆ n1 = 40.9;ชนิดข้อมูลเป็น float n2 = +3.2E-5;ชนิดข้อมูลเป็น float exponent n3 = 4.3E8;ชนิดข้อมูลเป็น float exponent n4 = -0.2E+3ชนิดข้อมูลเป็น float exponent n5 = 12.35Fชนิดข้อมูลเป็น double n6 = 12.34L;ชนิดข้อมูลเป็น long double3. การกำหนดค่าชนิดตัวอักษร ค่าคงที่ (Constant) เป็นตัวแปรที่ไม่สามารถเปลี่ยนแปลงค่าในภายหลังได้ ค่าของตัวแปรค่าคงที่จะต้องถูกกำหนดพร้อมกับการประกาศตัวแปรเสมอ ค่าคงที่สามารถเป็นข้อมูลประเภทต่างๆ เหมือนประเภทข้อมูลพื้นฐานได้ 1. ค่าคงที่ที่นำมาแสดงผลโดยตรง (Literal constant ) เป็นค่าคงที่ ที่ถูกสั่งพิมพ์โดยตรง (ค่าตัวเลขหรือข้อความ) โดยไม่ได้นำค่าเหล่านั้นจัดเก็บไว้ในตัวแปร ดังนั้นค่าคงที่ประเภทนี้จึงไม่สามารถอ้างอิงหรือเรียกใช้งานซ้ำได้อีก ตัวอย่าง การใช้คำสั่ง printf() เพื่อแสดงข้อความที่เป็นค่าคงที่แบบ Literal ตัวอย่าง การใช้คำสั่ง printf() เพื่อแสดงข้อความและตัวเลขที่เป็นค่าคงที่แบบ Literal 2. ค่าคงที่นิยามด้วย #define (Defined Constants) ภาษา C ได้จัดเตรียมพรีโปรเวสเซอร์ไดเร็กทีฟชื่อ #define สำหรับการกำหนดค่าคงที่โดยการประกาศใช้งานไว้ในส่วนของเฮดเดอร์ไฟล์ (Header File) โดยมีรูปแบบการประกาศใช้งานค่าคงที่ดังนี้ #define ConstantsName value โดยที่ : ตัวอย่าง การกำหนดค่าคงที่ด้วย #define 3. ค่าคงที่ที่เก็บไว้ในตัวแปร (Memory Constants) เป็นการกำหนดค่าคงที่ในรูปแบบของตัวแปร ซึ่งจะเขียนอยู่ในฟังก์ชัน main() โดยมีรูปแบบการประกาศใช้งานค่าคงที่ดังนี้ #define ConstantsName valueโดยที่ : const คือ การประกาศว่าตัวแปรที่กำหนดต่อไปนี้เป็นค่าคงที่ ตัวอย่าง การกำหนดค่าคงที่แบบเก็บไว้ในตัวแปร ตัวอย่าง การกำหนดค่าคงที่และการนำไปใช้งาน หน้าจอแสดงผลลัพธ์ : การหาพื้นที่วงกลม
การประกาศตัวแปร คือการจองเนื้อที่ในหน่วยความจำสำหรับเก็บค่าบางอย่างพร้อมทั้งกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้น เพื่อให้สะดวกในการเข้าถึงค่าที่เก็บอยู่ในหน่วยความจำดังกล่าว รูปแบบการประกาศค่าตัวแปร ตัวแปรทุกๆตัวที่ใช้งานในโปรแกรม จำเป็นจะต้องประกาศก่อนใช้งานเสมอ ภาษา C สามารถประกาศตัวแปรได้หลายรูปแบบด้วยกัน คือ 1. การประกาศตัวแปรที่ละตัว ที่ละบรรทัด ตัวอย่างเช่น int num;// สร้างตัวแปรชื่อ num สำหรับเก็บข้อมูลจำนวนเต็ม int n ;// สร้างตัวแปรชื่อ n สำหรับเก็บข้อมูลจำนวนเต็ม float PI;// สร้างตัวแปรชื่อ num สำหรับเก็บข้อมูลชนิดทศนิยม char data;// สร้างตัวแปรชื่อ data สำหรับเก็บข้อมูลชนิดตัวอักษร char name[50];// สร้างตัวแปรชื่อ name สำหรับเก็บข้อมูลชนิดตัวอักษร ขนาดไม่เกิน 502. การประกาศตัวแปรหลายๆตัว พร้อมกัน (Multiple Declaration) เป็นการประกาศตัวแปรที่มีชนิดข้อมูลเหมือนกันภายในบรรทัดเดียวกัน โดยใช้เครื่องหมายคอมม่า , คั่นระหว่างชื่อตัวแปรแต่ละตัว ตัวอย่างเช่น 3. การประกาศตัวแปรพร้อมกำหนดค่าเริ่มต้น เป็นการประกาศตัวแปร พร้อมกำหนดค่าเริ่มต้นให้กับตัวแปรภายในบรรทัดนั้นๆ ตัวอย่างเช่น 4. ประกาศตัวแปรชนิดค่าคงที่ เป็นการประกาศตัวแปรเพื่อจัดเก็บค่าคงที่ เป็นค่าในหน่วยความจำที่มีค่าคงที่ตลอดโปรแกรม ถ้าในโปรแกรมส่วนใดเรียกชื่อที่ประกาศไว้ก็จะได้ข้อมูลตามที่กำหนด จะใช้คำว่า const นำหน้า ตัวดำเนินการจะถูกใช้กับตัวแปรและค่าคงที่ในการดำเนินการบางอย่าง เช่น การดำเนินการทางคณิตศาสตร์ ในภาษา C มีตัวดำเนินการประเภทต่างๆ ที่ทำหน้าที่แตกต่างกันไป ยกตัวอย่างดังต่อไปนี้ 1. ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator) ตารางแสดงตัวดำเนินการเลขคณิต ตัวดำเนินการกระบวนการข้อมูลที่กระทำข้อมูลผลลัพธ์ตัวอย่าง+ การบวก (addition) จำนวนเต็ม,จำนวนจริง จำนวนเต็ม,จำนวนจริงx + y- การลบ (subtraction) จำนวนเต็ม,จำนวนจริง จำนวนเต็ม,จำนวนจริงx - y* การคูณ (multiplication) จำนวนเต็ม,จำนวนจริง จำนวนเต็ม,จำนวนจริงx * y/ การหาร (division) จำนวนเต็ม,จำนวนจริง จำนวนจริงx / y% การหารเอาเศษ (modulus) จำนวนเต็ม จำนวนเต็มx % yตัวอย่าง การใช้ตัวดำเนินการทางคณิตศาสตร์
หน้าจอแสดงผลลัพธ์ :
2. ตัวดำเนินการยูนารี ตัวอย่าง การใช้ตัวดำเนินการยูนารี ตัวดำเนินการยูนารีสามารถนำมาใช้กับโอเปอแรนด์(ตัวถูกดำเนินการ) ที่เป็นค่าคงที่แบบเลขจำนวนเต็ม เลขจำนวนจริง ตัวแปร และนิพจน์ก็ได้ นอกจากนี้ในภาษา C ยังมีตัวดำเนินการยูนารีตัวอื่นๆอีก เช่น ตัวดำเนินการเพิ่มค่า (Increment Operator) ที่ใช้เครื่องหมาย ++ และตัวดำเนินการลดค่า (Decrement Operator) ที่ใช้เครื่องหมาย -- ซึ่งหมายถึง การเพิ่มค่าขึ้นทีละหนึ่งหรือการลดค่าลงทีละหนึ่ง โดยสามารถกำกับไว้หน้าตัวแปรหรือหลังตัวแปรก็ได้ ตัวอย่าง การทำงานของตัวดำเนินการยูนารี
หน้าจอแสดงผลลัพธ์ :
3. ตัวดำเนินการเปรียบเทียบและตรรกะ (Comparison and Logical Operators) ผลลัพธ์จะมี 2 กรณีคือ ถ้าผลลัพธ์ถูกต้องหรือเป็นจริง (True) จะมีค่าเป็น 1 ถ้าผลลัพธ์ผิดหรือเป็นเท็จ (False) จะมีค่าเป็น 0 ซึ่งค่าตรรกะดังกล่าวจะมีชนิดข้อมูลเป็นเลขจำนวนเต็ม ตัวอย่าง การใช้ตัวดำเนินการเปรียบเทียบและตรรกะ
หน้าจอแสดงผลลัพธ์ :
นอกจากนี้ ยังสามารถนำตัวเชื่อมมาใช้ร่วมกันได้ ซึ่งประกอบด้วย ตัวเชื่อมความหมายตัวอย่าง&& และ (and) a && b|| หรือ (or) a || b! ไม่ใช่ (not) !aผลลัพธ์ที่ได้ จะเป็นไปตามค่าความเป็นจริง ดังนี้ โอเปอแรนด์ผลลัพธ์111101001001011000014. ตัวดำเนินการระดับบิต (Bitwise Operators) ผลลัพธ์ที่ได้จะได้จากตัวดำเนินการระดับบิต จะเป็นไปตามตารางค่าความจริง ดังนี้ โอเปอแรนด์ผลลัพธ์aba & ba | ba ^ b~a1111001001100101110000115. ตัวดำเนินการกำหนดค่า (Assignment operator) ในภาษา C มีหลายวิธีในการกำหนดค่าให้กับตัวแปร ซึ่งปกติตัวดำเนินการกำหนดค่ามักจะใช้เครื่องหมาย = (เท่ากับ) และการกำหนดค่านิพจน์ก็จะใช้เครื่องหมาย + (บวก) เช่นกัน สำหรับรูปแบบของตัวดำเนินการกำหนดค่า สามารถเขียนได้ตามรูปแบบดังนี้ variable_name = expression โดย : ตัวอย่าง : การกำหนดค่านิพจน์ด้วยตัวดำเนินการกำหนดค่า ตัวอย่าง : การกำหนดค่าให้นิพจน์และผลลัพธ์ที่ได้ โดยกำหนดค่าให้ตัวแปร a เป็นข้อมูลเลขจำนวนเต็ม นิพจน์ผลลัพธ์ a = 5.55 a = -5.55 a = 10.2510 ตัวอย่าง : การกำหนดค่าให้นิพจน์และผลลัพธ์ที่ได้ นอกจากนี้ สามารถกำหนดค่าให้กับตัวแปรหลายๆ ตัวในคราวเดียวกันได้ ดังตัวอย่างต่อไปนี้ • ประกาศตัวแปร a และ b โดยกำหนดตัวแปร a และ b มีค่าเท่ากับ 10 • ประกาศตัวแปรพร้อมๆ กันหลายตัว และกำหนดค่าเริ่มต้นของตัวแปรทั้งหมดเป็น 10 • รูปแบบที่ผิดของประกาศตัวแปรพร้อมๆ กันหลายตัว • นิพจน์เกี่ยวกับการสะสมค่า 6. ตัวดำเนินการเงื่อนไข (Conditional Operator) จะนำไปใช้ในการทดสอบค่านิพจน์ทางตรรกะว่า จริงหรือเท็จ รูปแบบดังนี้ |