คำสั่งที่ใช้งานในภาษา C นั้นล้วนเป็นฟังก์ชั่นทั้งสิ้น ดังนั้นโปรแกรมที่เขียนขึ้นจึงประกอบไปด้วยฟังก์ชั่นมากมาย ที่ถูกกำหนดให้ทำหน้าที่ใดหน้าที่หนึ่งในลักษณะของโมดูลย่อย เพื่อทำงานให้บรรลุเป้าหมาย และในเมื่อภาษา C คือภาษาที่ประกอบไปด้วยฟังก์ชั่น ดังนั้นจึงจำเป็นทำความเข้าใจเกี่ยวกับความหมายของฟังก์ชั่นเสียก่อน
| (vertical bar) # (number sign)
ฟังก์ชั่น (Function) คือ ชุดคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงาน ที่อนุญาตให้สามารถรับข้อมูล (Input) ประมวลผล (Processes) และแสดงผลข้อมูล (Output) โดยฟังก์ชั่นที่ถูกเขียนขึ้นใช้งาน และสามารถเรียกมาใช้งานได้ทันที จะถูกจัดเก็บไว้ในไลบารีมาตรฐาน (Standard Library) ในขณะที่ฟังก์ชั่นอื่นๆจะเป็นฟังก์ชั่นที่ถูกเขียนขึ้นโดยโปรแกรมเมอร์ อย่างไรก็ตามในภาษา C จะมีฟังก์ชั่นพิเศษฟังก์ชั่นหนึ่งที่จำเป็นต้องมีไว้ในโปรแกรมเสมอ คือ ฟังก์ชั่น main() ทั้งนี้ฟังก์ชั่นดังกล่าวจัดเป็นฟังก์ชั่นหลักที่นำมาใช้เป็นจุดเริ่มต้นของโปรแกรมเพื่อสั่งให้ทำงาน โดยฟังก์ชั่นอื่นๆจะถือเป็นรูทีนย่อย (Subroutines)
โครงสร้างของโปรแกรมภาษา C สามารถแบ่งเป็นส่วนสำคัญต่างๆ ดังนี้
โครงสร้างของโปรแกรมภาษา C สามารถแบ่งเป็นส่วนสำคัญต่างๆ ดังนี้
อักขระในภาษา C (C Character Sets)
ภาษา C ได้เตรียมกลุ่มอักขระต่างๆ ให้ใช้งานที่เรียกว่า Character Sets โดยแบ่งออกเป็น 2 กลุ่มใหญ่ๆ คือ Basic Character set และ Execution Character set
1. Basic Character set ประกอบด้วยกลุ่มอักขระ ดังต่อไปนี้
- อักษรตัวพิมพ์ใหญ่ (Alphabets Upper Case) ประกอบด้วยอักษร A-Z จำนวน 26 ตัว ดังนี้
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- อักษรตัวพิมพ์เล็ก (Alphabets Lower Case) ประกอบด้วยอักษร a-z จำนวน 26 ตัว ดังนี้
a b c d e f g h i j k l m n o p q r s t u v w x y z
- ตัวเลข (Decimal Digits) ประกอบไปด้วยตัวเลข 0 - 9 จำนวน 10 ตัว ดังนี้
0 1 2 3 4 5 6 7 8 9
- ตัวอักขระแบบกราฟิก ประกอบด้วยสัญลักษณ์ต่างๆ จำนวน 29 ตัว ดังนี้
, (comma) ( (left parenthesis)
; (semicolon) ) (right parenthesis)
; (semicolon) ) (right parenthesis)
. (period) [ (left bracket)
? (question mark) ] (right bracket)
! (exclamation) { (left brace)
: (colon) } (right brace)
+ (plus) < (less than)
- (minus) > (greater than)
* (asterisk) = (equal sign)
/ (slash) & (ampersand)
\ (backslash) % (percent sign)
' (single quote) ^ (caret)
" (double quote) _ (under score)
~ (tild)
-ตัวอักขระแบบช่องว่าง (White space Character ประกอบด้วยอักขระที่เป็นช่องว่างในลักษณะต่างๆ จำนวน 5 ตัว ดังนี้
blank space, horizontal tab, vertical tab, newline, form feed
2. Execution Character set ประกอบด้วยกลุ่มอักขระ ดังต่อไปนี้
-อักขระที่เป็นค่าว่าง (Null Character) อักขระที่เป็นค่าว่าง หรือค่า Null จะใช้สัญลักษณ์ \0
-อักขระควบคุม (Escape Sequence)เป็นรหัสที่ใช้ควบคุมการแสดงผลทางจอภาพและเครื่องพิมพ์ประกอบด้วย :
\a alert (bell) \\ backslash
\b backspace \? backslash
\f form feed \' single quote
\n new line \" double quote
\r carriage return \ooo octal number
\t horizontal ta \xhh hexadecimal number
\v vertical tab
กฎเกณฑ์การเขียนภาษาซี
กฎเกณฑ์ในการเขียนภาษา C ที่ควรคำนึง มีดังนี้
1. จะต้องกำหนดพรีโปรเชสเชอร์ที่ต้นโปรแกรมก่อน เช่น #include<stdio.h>, #include<conio.h>
2. คำสั่งต่างๆจะใช้อักษรพิมพ์เล็ก
3. ตัวแปรที่ใช้งานในโปรแกรมต้องประกาศไว้เสมอ
4. ภายในโปรแกรมต้องมีอย่างน้อยหนึ่งฟังก์ชั่น คือ main ( )
5. ใช้เครื่องหมาย { เพื่อบอกจุดเริ่มต้นของชุดคำสั่ง และเครื่องหมาย } เพื่อบอกจุดสิ้นสุดของชุดคำสั่ง
โดยสามารถซ้อนเครื่องหมาย { } เพิ่มไว้ภายในได้
6. สิ้นสุดของแต่ละประโยคคำสั่ง จะต้องจบด้วยเครื่องหมาย ; (semicolon)
7. สามารถใช้เครื่องหมาย /*comment*/ หรือ //comment เพื่อระบุหมายเหตุภายในโปรแกรม โดยคำ
อธิบายที่อยู่ภายใต้เครื่องหมาย /*comment*/ หรือ //comment จะไม่ถูกนำไปประมวลผล
ตัวแปลภาษา (Translator)
เนื่องจากภาษาคอมพิวเตอร์โดยเฉพาะภาษารับสูง จะมีจุดประสงค์เพื่อให้มนุษย์สามารถสื่อสารเพื่อ การเขียนโปรแกรมได้ง่ายขึ้น แต่ภาษาระดับสูงเป็นภาษาที่คอมพิวเตอร์ไม่รู้จัก ดังนั้นจึงต้องนำ
ภาษาระดับสูงผ่านกระบวนการแปลเพื่อให้เป็นภาาาเครื่องเสียก่อน ตัวแปลภาษาแบ่งออกเป็น 2 ชนิด คือ
1. อินเตอร์พรีเตอร์ (Interpreter)
ตัวแปลภาษาชนิดอินเตอร์พรีเตอร์ จะทำการแปลคำสั่งที่ละคำสั่ง และจะปฏิบัติตามในคำสั่งนั้นๆ
หากไม่พบข้อผิดพลาดใดๆ จากนั้นก็จะนำคำสั่งต่อไปมาแปลต่อ จะกระทำเช่นนี้ไปเรื่อยๆจนจบ ถ้ามี ข้อผิดพลาดในโปรแกรม เครื่องก็จะหยุดแล้วรายงานให้ทราบทันทีทางจอภาพ
2. คอมไพลเลอร์ Compiler)
การแปลของคอมไพล์จะแปลทั้งโปรแกรมที่เดียว นั่นคือซอร์สโค้ดทั้งโปรแกรมจะถูกนำมาแปล
เพียงครั้งเดียว ถ้าเจอข้อผิดพลาดก็จะรายงานให้ทราบเพียงครั้งเดียวโดยไม่บอกตำแหน่งของการ ผิดพลาด |
|ตัวดำเนินการและนิพจน์ |
ในการเขียนโปรแกรมตวดำเนินการจะเป็นตัวทำหน้าที่รวมค่าต่างๆ และกระทำกับค่าต่างๆ ให้เป็นค่าเดียวกัน อย่างเช่นโปรแกรมในบทที่ผ่านมามีการนำข้อมูลที่เป็นตัวแปรมาคูณกับค่าคงที่ ซึ่งจะต้องใช้ตัวดำเนินการทางคณิตศาสตร์เพื่อทำการคูณ ตัวดำเนินการมีหลายประเภทดังต่อไปนี้
1. ตัวดำเนินการเลขคณิต
ใช้สำหรับกระทำการคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร โดยจะนำข้อมูลตัวหนึ่งไปกระทำกับอีกตัวหนึ่ง โดยใช้ผลลัพธ์เป็นตัวเลขทางคณิตศาสตร์ ตัวดำเนินการทางคณิตศาสตร์ แบ่งออกได้ดังต่อไปนี้
จากตัวอย่าง 3.4.2 คำสั่ง sum / 3 ควรจะให้ผลลัพธ์เป็นจำนวนเต็ม 8 เนื่องจากตัวถูกดำเนินการทั้งสองตัวมีชนิดเป็นจำนวนเต็ม แต่ในที่นี้เราได้แปลงชนิดข้อมูลของตัวแปร sum แบบชั่วคราว จากจำนวนเต็มให้เป็นจำนวนจริง โดยใช้ (float) ทำให้ sum / 3 ในบรรทัดที่ 13 ให้ผลลัพธ์เป็นจำนวนจริงก่อนนำไปกำหนดให้เป็นค่าของตัวแปร average
2. ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบ (Relation Operators) จะนำข้อมูลสองค่ามาเปรียบเทียบกัน โดยข้อมูลทั้งสองค่าจะต้องเป็นข้อมูลประเภทเดียวกัน ผลลัพธ์ที่ได้จะเป็นค่าทางลอจิก คือ จริงหรือเท็จ
3. ตัวดำเนินการทางตรรกะ
ตัวดำเนินการทางตรรกะ (Logical Operator) ประกอบด้วย การทำ AND(และ) , OR(หรือ) และ NOT(นิเสธ) เมื่อกระทำกับค่าใด ผลลัพธ์ที่ออกมาจะเป็นจริงหรือเท็จ ตัวดำเนินการทางตรรกะแสดงได้ ดังตารางต่อไปนี้
ตารางที่ 3.4.3 ตารางแสดงตัวดำเนินการทางตรรกะ
จากตารางค่าความจริงของนิพจน์ตรรกะ เมื่อ 0 แทนค่าเท็จ และ 1 แทนค่าจริง แสดงดังตาราง
- p && q จะมีค่าจริง เมื่อ p และ q มีค่าจริงทั้งคู่ มิฉะนั้นจะมีค่าเป็นเท็จ
- p || q จะมีค่าจริง เมื่อ p และ q มีค่าเท็จทั้งคู่ มิฉะนั้นจะมีค่าเป็นจริง
- !p จะมีค่าจริง เมื่อ p มีค่าเท็จ และ !p จะมีค่าเท็จ เมื่อ p มีค่าจริง
4. ตัวดำเนินการแบบบิต
จะนำข้อมูลสองค่ามาเปรียบเทียบกัน โดยข้อมูลทั้งสองค่าจะต้องเป็นข้อมูลประเภทเดียวกัน ผลลัพธ์ที่ได้จะเป็นค่าทางลอจิก คือ จริงหรือเท็จ
5. ตัวดำเนินการกำหนดค่าเชิงประกอบ
การใช้ตัวดำเนินการบางประเภทสามารถนำมารวมกันเป็น ตัวดำเนินการกำหนดค่าเชิงประกอบ (Compound Assisgnment) ได้ มีรูปแบบคือ
6. ตัวดำเนินการเพิ่มค่าและลดค่า
ตัวดำเนินการเพิ่มค่า (Increment Operator) ใช้เครื่องหมาย ++
ตัวดำเนินการลดค่า (Decrement Operator) ใช้เครื่องหมาย --
โดยการเพิ่มค่า หรือการลดค่าด้วยตัวดำเนินการดังกล่าว จะเพิ่มทีละหนึ่ง หรือลดทีละหนึ่ง และจะต้องใช้กับตัวแปรโดดๆ โดยสามารถใช้เครื่องหมาย ++ และ -- เขียนนำหน้าตัวแปร (Prefix) หรือหลังตัวแปร (Postfix) ก็ได้ เช่น ++i หรือ i++ แต่ทั้งสองแบบนี้จะมีวิธีการจัดการกับค่าที่แตกต่างกัน ดังตาราง
นิพจน์
นิพจน์ (Expression) ในภาษาซีนี้ ประกอบด้วย ค่าคงตัว ค่าคงที่ หรือตัวแปร 1 จำนวน หรือกลุ่มของค่าคงตัว ค่าคงที่ หรือตัวแปรพร้อมด้วยตัวดำเนินการของภาษาซี ตัวดำเนินการที่ใช้ในนิพจน์ที่กล่าวถึงได้แก่ ตัวดำเนินการกำหนดค่า ตัวดำเนินการคำนวณ และตัวดำเนินการบอกตำแหน่งบนหน่วยความจำ
| ans = 100 - 50 score = midterm + final +quiz income = salary + (ot * RATE) + bonus - tax |
จากนิพจน์คณิตศาสตร์ข้างต้น พบว่า ans, score และ income เป็นตัวแปรที่ใช้เก็บผลลัพธ์จากการคำนวณ ส่วนนิพจน์ด้านขวาจะเป็นนิพจน์แบบหลายตัวแปร ซึ่งสามารถมีได้ทั้งตัวแปร และค่าคงที่ รวมถึงตัวดำเนินการคณิตศาสตร์ เช่น + - * / เป็นต้น ซึ่งในการสร้างสูตรคำนวณค่าตัวเลข ซึ่งเป็นสูตรที่มีความซับซ้อน จะต้องระมัดระวังในการจัดลำดับนิพจน์ เพื่อให้คอมพิวเตอร์ประมวลผลได้อย่างถูกต้อง ทั้งนี้ตัวดำเนินการต่างๆ ที่นำมาใช้เพื่อการคำนวณนั้น แต่ละตัวจะมีลำดับความสำคัญที่แตกต่างกัน เช่น เมื่อพบเครื่องหมาย + และ * การประมวลผลจะกระทำที่ตัวดำเนินการ * ก่อน เพราะจะมีลำดับความสำคัญสูงกว่า + นั่นเอง
ตัวดำเนินการกับลำดับความสำคัญ
ตัวดำเนินการแต่ละตัวจะมีลำดับความสำคัญก่อนหลังที่แตกต่างกัน โดยการประมวลผลจะกระทำกับตัวดำเนินการที่มีลำดับควาสำคัญสูงก่อน แต่ถ้ากรณีที่มีลำดับความสำคัญเท่ากัน ตามปกติจะกระทำกับตัวดำเนินการจากซ้ายไปขวา
ตารางที่ 3.4.7 ตารางแสดงตัวดำเนินการกับลำดับความสำคัญ
|
จากตัวอย่าง 3.4.6 เมื่อพิจารณาจากลำดับความสำคัญของตัวดำเนินการ จะพบว่า
ในบรรทัดที่ 18 นิพจน์ c - b / a * a มีค่าเท่ากับ c - ((b / a) * a) ซึ่งมีค่าเท่ากับ 1 และมีค่าเท่ากับค่าของนิพจน์ (c - b) / (a * a) ในบรรทัดที่ 19
จากบรรทัดที่ 22 ค่าของนิพจน์ 8 + 2 * 6 / 3 - 2 มีค่าเท่ากับนิพจน์ (8 + ((2 * 6) / 3) - 2
และบรรทัดที่ 23 ค่าของนิพจน์ 5 % 5 + 5 * 5 - 5 / 5 มีค่าเท่ากับนิพจน์ ((5 % 5) + (5 * 5)) - (5 / 5)
ลำดับความสำคัญของตัวดำเนินการ (Operator of Precedence)
ในการเขียนโปรแกรมเพื่อใช้งาน จำเป็นต้องเกี่ยวข้องกับนิพจน์คณิตศาสตร์ และสูตรคำนวณต่างๆไม่มากก็น้อย และสิ่งต่างๆเหล่านี้จำเป็นต้องใช้ตัวดำเนินการ เข้าไปประกอบใช้งาน และตัวดำเนินการแต่ละตัวต่างก็มีลำดับความสำคัญของการทำงานก่อนหลังแตกต่างกันไป ดังนั้น จึงจำเป็นต้องศึกษาถึงลำดับการทำงานของตัวดำเนินการ ดังนี้
| ที่ | ตัวดำเนินการ | ความหมาย | ลำดับการคำนวณ |
| 1 | ( ) [ ] . -> | Parenthesized expression Array subscript Member selection by object Member selection by pointer | ซ้ายไปขวา |
| 2 | + - ++ -- ! ~ & sizeof (type) | U nary + and - Prefix increment and prefix decrements Logical NOT and bit wise complement Address-of Size of expression or type Explicit cast to type such as (int) or (double) | ขวาไปซ้าย |
| 3 | * / % | Multiplication and division and modulus | ซ้ายไปขวา |
| 4 | + - | Addition and Subtraction | ซ้ายไปขวา |
| 5 | << >> | Bit wise shift left and bit wise shift right | ซ้ายไปขวา |
| 6 | < <= > >= | Less than and less than or equal to Greater than and greater than or equal to | ซ้ายไปขวา |
| 7 | == != | Equal to and not equal to | ซ้ายไปขวา |
| 8 | & | Bit wise AND | ซ้ายไปขวา |
| 9 | ^ | Bit wise Exclusive OR | ซ้ายไปขวา |
| 10 | | | Bit wise OR | ซ้ายไปขวา |
| 11 | && | Logical AND | ซ้ายไปขวา |
| 12 | || | Logical OR | ซ้ายไปขวา |
| 13 | ?: | Conditional operator | ขวาไปซ้าย |
| 14 | = += -= *= /= %= <<= >>= &= |= ^= | Assignment addition assignment and subtraction assignment Multiplication assignment and division assignment Modulus assignment Bit wise shift left assignment and bit wise shift right assignment Bit wise AND assignment and bit wise OR assignment Bit wise Exclusive OR assignment | ขวาไปซ้าย |
| 15 | , | Comma operator | ซ้ายไปขวา |
|ตัวแปร (Variable)|
ตัวแปร (Variable) คือ การจองพื้นที่ในหน่วยความจำของคอมพิวเตอร์สำหรับเก็บข้อมูล ที่ต้องใช้ในการ ทำงานของโปรแกรม โดยมีการตั้งชื่อเรียกหน่วยความจำในตำแหน่งนั้นด้วย เพื่อความสะดวกในการเรียกใช้ข้อมูล ถ้าจะใช้ข้อมูลใดก็ให้เรียกผ่านชื่อของตัวแปรที่เก็บเอาไว้
การตั้งชื่อให้กับตัวแปรจะเป็นไปตามหลักการตั้งชื่อของภาษาซี และชื่อที่เหมาะสมควรจะเป็นชื่อที่สื่อความหมาย การประกาศตัวแปรมีรูปแบบ ดังนี้
การตั้งชื่อให้กับตัวแปรจะเป็นไปตามหลักการตั้งชื่อของภาษาซี และชื่อที่เหมาะสมควรจะเป็นชื่อที่สื่อความหมาย การประกาศตัวแปรมีรูปแบบ ดังนี้
กฎการตั้งชื่อตัวแปร (Variable Names) การตั้งชื่อตัวแปรและค่าคงที่ จำเป็นต้องคำนึงถึงกฎเกณฑ์ต่างๆ ดังนี้ คือ
1. ต้องขึ้นต้นด้วยตัวอักษร A-Z หรือ a-z หรือเครื่องหมาย _(Underscore) เท่านั้น
2. ภายในชื่อตัวแปรสามารถใช้ตัวอักษร A-Z หรือ a-z หรือตัวเลข 0-9 หรือเครื่องหมาย _ (Underscore)
3. ภายในชื่อห้ามเว้นช่องว่าง หรือใช้สัญลักษณ์นอกเหนือจากข้อ 2
4. ตัวอักษรพิมพ์เล็กหรือใหญ่มีความหมายแตกต่างกัน
5. ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserved Word) ดังนี้
auto
|
default
|
float
|
register
|
struct
|
volatile
|
break
|
do
|
far
|
return
|
switch
|
while
|
case
|
double
|
goto
|
short
|
typedef
|
char
|
else
|
if
|
signed
|
union
|
const
|
enum
|
int
|
sizeof
|
unsigned
|
continue
|
extern
|
long
|
static
|
void
|
ตัวอย่างการตั้งชื่อตัวแปร
การตั้งชื่อตัวแปรที่ผิด :
a month MONTH _var1
sarary stdCode num1 day_of_week
sarary stdCode num1 day_of_week
การตั้งชื่อตัวแปรที่ผิด :
586_cpu emp no do tatal$
586_cpu emp no do tatal$
*point sub-total num1,2 @email
ชนิดข้อมูลและขนาด (Data Type and Sizes)
ตัวแปรที่ประกาศใช้งานในโปรแกรม จำเป็นต้องถูกระบุชนิดข้อมูลเพื่อให้ทราบว่าตัวแปรเหล่านั้น
จัดเก็บข้อมูลชนิดใดลงไป สำหรับในภาษา C จะมีข้อมูลพื้นฐานไม่กี่ชนิด คือ
จัดเก็บข้อมูลชนิดใดลงไป สำหรับในภาษา C จะมีข้อมูลพื้นฐานไม่กี่ชนิด คือ
| char | ข้อมูลชนิดตัวอักษร (Character) |
| int | ข้อมูลชนิดเลขจำนวนเต็ม (integer) |
| float | ข้อมูลชนิดตัวเลขจำนวนจริง(ทศนิยม) (read or floating point) |
| double | ข้อมูลชนิดเลขจำนวนจริง 2 เท่า (double precision float) |
และยังสามารถปรับรุงด้วยการเพิ่มเครื่องหมายนำหน้าได้อีก ซึ่งประกอบด้วย
signed unsigned long short
แสดงชนิดข้อมูลพื้นฐานในภาษาซี
แสดงชนิดข้อมูลพื้นฐานในภาษาซี
ชนิดข้อมูลพื้นฐานในภาษาซีเป็นข้อมูลชนิดสเกลาร์ โดยที่ตัวแปรที่มีชนิดสเกลาร์ในขณะใดขณะหนึ่งจะเก็บข้อมูลได้เพียงค่าเดียวเท่านั้น ข้อมูลชนิดสเกลาร์แบ่งออกเป็น
ในเอกสารนี้จะกล่าวถึงเฉพาะการใช้งานข้อมูลชนิดจำนวนเต็มและข้อมูลชนิดจำนวนจริงเท่านั้น
ข้อมูลชนิดจำนวนเต็ม
บรรทัดที่ 4 ตัวแปร age ถูกประกาศให้มีชนิดจำนวนเต็ม และถูกกำหนดให้มีค่าเป็น 15 ในบรรทัดที่ 5
บรรทัดที่ 6 ค่าตัวแปร age ซึ่งเป็นอาร์กิวเมนต์ที่สองของคำสั่ง printf() จะถูกจัดรูปแบบให้อยู่ในรูปของจำนวนเต็มฐานสิบก่อนแสดงผล
สังเกตว่าอาร์กิวเมนต์แรกของคำสั่ง printf() จะต้องมีชนิดเป็นสายอักขระเสมอ และคำสั่ง printf() จะมีจำนวนอาร์กิวเมนต์นอกเหนือจากอาร์กิวเมนต์แรกอีกเท่าใดขึ้นอยู่กับจำนวนชุดอักขระจัดรูปแบบในอาร์กิวเมนต์แรก โดยที่อาร์กิวเมนต์ในลำดับถัดไปอาจอยู่ในรูปของค่าคงตัว นิพจน์ หรือตัวแปรก็ได้
บรรทัดที่ 4 เป็นการประกาศให้ x1 และ y1 เป็นตัวแปรชนิดจำนวนเต็มทั้งสองตัว และบรรทัดที่ 5 เป็นการประกาศให้ x2 และ y2 เป็นตัวแปรชนิดจำนวนเต็ม พร้อมกับกำหนดให่มีค่าเริ่มต้นเป็น 5 และ 0 ตามลำดับ
อาร์กิวเมนต์แรกของคำสั่ง printf() ในบรรทัดที่ 8 เป็นสายอักขระที่ประกอบด้วยชุดอักขระจัดรูปแบบ %d จำนวน 2 ชุด โดย %d แรกใช้จัดรูปแบบการแสดงผลค่าของตัวแปร x1 และ %d ที่สองใช้จัดรูปแบบการแสดงผลค่าของตัวแปร y1
นอกจากชุดอักขระจัดรูปแบบ %d แล้วยังมีชุดอักขระจัดรูปแบบสำหรับจำนวนเต็มในฐานอื่นอีก คือ %o และ %x ซึ่งเป็นชุดอักขระที่ใช้จัดรูปแบบข้อมูลให้อยู่ในรูปจำนวนเต็มฐานแปด (octal) และจำนวนเต็มฐานสิบหก (hexadecimal) ตามลำดับ ดังแสดงในตัวอย่างที่ 3.2.3
ข้อมูลชนิดจำนวนจริง
ชนิดข้อมูลจำนวนจริงในภาษาซีประกอบด้วย float double และ long double โดยชนิด float จะมีจำนวนตำแหน่งทศนิยมน้อยกว่าชนิด double และชนิด long double ตามลำดับ
ชุดอักขระจัดรูปแบบที่ใช้สำหรับข้อมูลชนิดจำนวนจริงในคำสั่ง printf() ประกอบด้วย %f ใช้เพื่อจัดรูปแบบข้อมูลชนิด float ให้อยู่ในรูปแบบจำนวนจริงฐานสิบ %e และ %E ใช้เพื่อจัดรูปแบบข้อมูลให้อยู่ในรูปของสัญลักษณ์เชิงวิทยาศาสตรสำหรับข้อมูลชนิด double และ long double จะใช้อักขระ lf และ Lf เป็นอักขระที่เพิ่มเข้าไปใช้ชุดอักขระจัดรูปแบบ ตามลำดับ
การแสดงผลข้อมูลชนิดจำนวนจริงในคำสั่ง printf() โดยใช้ %f %e หรือ %E จะแสดงค่าทศนิยม 6 ตำแหน่ง อย่างไรก็ตามในชุออักขระจัดรูปแบบจำนวนจริง ยังสามารถกำหนดจำนวนตำแหน่งในการแสดงผลข้อมูลให้กับข้อมูลแต่ละจำนวน เพื่อจัดรูปแบบผลลัพธ์ให้สวยงาม ดังแสดงในตัวอย่างที่ 3.2.5
ค่าคงที่ หมายถึง ข้อมูลที่ระบุเป็นค่าอย่างใดอย่างหนึ่งในโปรแกรม และมีชนิดของข้อมูลตามค่าของข้อมูลนั้น เช่น
![]() บรรทัดที่ 2 และ 3 เป็นการเรียกใช้คำสั่งของตัวประมวลผลก่อนซี #define ซึ่งใช้สำหรับกำหนดให้ FACTOR และ FBASE มีค่าคงที่ที่มีค่าเป็น 5/9 และ 32 ตามลำดับ ในขั้นตอนการประมวลผลก่อน (preprocessing) ค่าคงที่ทั้งหมดจะถูกแทนที่ด้วยค่าที่กำหนดให้ บรรทัดที่ 7 ค่า 78.5 เป็นค่าคงที่ชนิดจำนวนจริงที่กำหนดให้เป็นค่าของตัวแปร degF บรรทัดที่ 11 เราสามารถกำหนดให้ตัวแปร degF มีค่าเป็น 100.00 และเรียกใช้ค่าคงที่ FACTOR และ FBASE คำนวณอีกครั้งในบรรทัดที่ 12 การใช้ค่าคงที่ในโปรแกรมอย่างเหมาะสม จะช่วยให้สามารถเข้าใจความหมายของโปรแกรมได้ดียิ่งขึ้น และยังช่วยให้การปรับปรุงโปรแกรมทำได้โดยง่าย |
การกำหนดค่าให้กับตัวแปร (Presetting Variable Values)
การกำหรดค่าให้กับตัวแปร จะต้องกำหนดให้เป็นไปตามกฎ และต้องสัมพันธ์กับชนิดข้อมูลที่ประกาศไว้เป็นสำคัญ เช่น หากกำหนดตัวแปรเป็นชนิดข้อมูล int ค่าที่กำหนดให้กับตัวแปรก็จะต้องเป็นเลขจำนวนเต็มเท่านั้น ไม่สามารถกำหนดเป็นเลขทศนิยาหรือข้อความได้
การกำหรดค่าให้กับตัวแปร จะต้องกำหนดให้เป็นไปตามกฎ และต้องสัมพันธ์กับชนิดข้อมูลที่ประกาศไว้เป็นสำคัญ เช่น หากกำหนดตัวแปรเป็นชนิดข้อมูล int ค่าที่กำหนดให้กับตัวแปรก็จะต้องเป็นเลขจำนวนเต็มเท่านั้น ไม่สามารถกำหนดเป็นเลขทศนิยาหรือข้อความได้
การกำหนดค่าชนิดเลขจำนวนเต็ม
1. ค่าตัวเลขจะต้องไม่มีทศนิยม
2. สามารถเป็นได้ทั้งค่าบวก และค่าลบ
3. สำหรับค่าบวกไม่จำเป็นต้องใส่เครื่องหมาย
4. ห้ามใช้เครื่องหมายคอมม่า ,หรือช่องว่างกำกับระหว่างตัวเลข เช่น 14,560 ซึ่งถือว่าผิด
5. ช่วงค่าตัวเลจจำนวนเต็ม จะอยู่ระหว่าง -2,147,483,647 ถึง 2,147,483,647
6. สามารถใช้ Suffix ต่อท้ายค่าได้ เช่น เลขจำนวนเต็มแบบยาว ก็จะใช้อักษร L (ตัวพิมพ์เล็กหรือใหญ่ก็ได้)ต่อท้ายค่า ส่วนค่าที่เป็น unsign ก็จะใช้อักษร U ต่อท้าย และใช้ UL ต่อท้ายค่าที่เป็น unsigned long
ตัวอย่าง : n1 = 445; //int
n2 = +557;
n3 = -6687;
n4 = 123456789L; //long int
n5 = 1234U; //unsigned int
n6 = 123456789UL; //unsigned long int
การกำหนดค่าชนิดเลขจำนวนจริง
1.ค่าตัวเลขสามารถมีจุดทศนิยมได้
2.สามารถเป็นได้ทั้งค่าบวก และลบ
3.ค่าบวกไม่จำเป็นต้องใส่เครื่องหมาย + นำหน้า
4.สามารถกำหนดค่าแบบเอ็กซ์โปแนนต์ได้ ด้วยการใช้อักษร E ต่อท้ายค่า
5.ค่าที่ถูกกำหนอเป็นค่าเอ็กซ์โปรเนนต์ สามารถเป็นได้ทั้งค่าบวกและลบ
6.ช่วงของค่าตัวเลขชนิดจำนวนจริงเป็นไปตามชนิดข้อมูล ซึ่งอาจถูกกำหนดเป็น float, double
หรือ long double
หรือ long double
7.สำหรับค่าจำนวนจริงชนิด double จะใช้ F ต่อท้ายค่า และใช้ L ต่อท้ายค่าที่กำหนดชนิดข้อมูล
เป็น long double
เป็น long double
ตัวอย่าง : n1 = 40.9; //float
n2 = +3.2E-5; //float exponent
n3 = 4.3E8;
n4 = -0.2E+3
n5 = 12.35F //double
n6 = 12.34L; //long double
การกำหนดค่าชนิดตัวอักษร
1.ค่าที่กำหนดจะต้องอักขระเพียงค่าเดียว และจะต้องอยู่ภายในเครื่องหมาย ' ' ไม่ใช่เครื่องหมาย " " ดังนั้นจึงต้องพึงระมัดระวังเป็นพิเศษด้วย
2.ขนาดจำนวนตัวอักษรในภาษา C จะมองเป็น ASCII ที่ใช้แทนตัวอักขระต่างๆ เช่น ค่า 'A' จะมีค่าเท่ากับ 65 หรือค่า 'a' จะมีค่าเป็น 97
ตัวแปรสำหรับข้อความ
ในภาษา C ไม่มีการกำหนดชนิดของตัวแปรสำหรับข้อความโดยตรง แต่จะใช้การกำหนดชนิดของตัวแปรอักขระ (char) ร่วมกับการกำหนดขนาดแทน และจะเรียกตัวแปรสำหรับเก็บข้อความว่า ตัวแปรสตริง (string) รูปแบบการประกาศตัวแปร
สตริงแสดงได้ดังนี้
char name[n] = "str";
name ชิ่อของตัวแปร
n ขนาดของข้อความ หรือจำนวนอักขระในข้อความ
str ข้อความเริ่มต้นที่จะกำหนดให้กับตัวแปรซึ่งต้องเขียนไว้ภายใต้เครื่องหมาย " "
n ขนาดของข้อความ หรือจำนวนอักขระในข้อความ
str ข้อความเริ่มต้นที่จะกำหนดให้กับตัวแปรซึ่งต้องเขียนไว้ภายใต้เครื่องหมาย " "
ตัวอย่างการประกาศตัวแปรสำหรับเก็บข้อความ แสดงได้ดังนี้
char name[5] = "kwan" ; | สร้างตัวแปร name สำหรับเก็บ ข้อความ kwan ซึ่งมี 4 ตัวอักษร ดังนั้น name ต้องมีขนาด 5 |
| char year[5] = "2549"; | สร้างตัวแปร year สำหรับเก็บ ข้อความ 2549 ซึ่งมี 4 ตัวอักษร ดังนั้น year ต้องมีขนาด 5 |
| char product_id[4] = "A01"; | สร้างตัวแปร product_id สำหรับเก็บ ข้อความ A01 ซึ่งมี 3 ตัวอักษร ดังนั้น product_id ต้องมีขนาด 4 |
การประกาศตัวแปร (Declarations)
ตัวแปรทุกตัวจำเป็นจะต้องประกาศก่อนใช้งานเสมอ แต่อย่างไรก็ตามภาษา C ก็ยังสามารถประกาศตัวแปรได้หลายรูปแบบ ซึ่งประกอบด้วย
1.การประกาศตัวแปรที่ละตัว ที่ละบรรทัด เช่น
int lower;
int upper;
int step;
char c;
char line[1000];
2.การประกาศกลุ่มตัวแปรพร้อมกัน
เป็นการประกาศตัวแปรที่มีชนิดข้อมูลเหมือนกันภายในบรรทัดเดียวกัน (Multiple Declaration)โดยใช้เครื่องหมายคอมม่า , คั่นระหว่างชื่อตัวแปรแต่ละตัว เช่น
int lower, upper, step;
3.การกำหนดตัวแปรพร้อมกำหนดค่าเริ่มต้น เช่น
char esc='\\';
int i=0;
4.ประกาศตัวแปรชนิดค่าคงที่
const double e=3.14;
const char msg[ ]= "warning...."































