ชนิดข้อมูล

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

ชนิดข้อมูล
ความหมาย
ขนาด (bytes)
ช่วงข้อมูล (range)
Char อักษรหรืออักขระ 1 -128 ถึง 127
int จำนวนเต็ม 2 -32,768 ถึง 32,767
float จำนวนจริง(เลขทศนิยม) 4 3.4E + 38(7 ตำแหน่ง)
double จำนวนจริงละเอียด 2 เท่า 8 1.7E + 308 (15 ตำแหน่ง)
void ไม่ให้ค่าใด ๆ 0 ไม่มีค่า

และยังสามารถปรับปรุงด้วยการเพิ่มคำสั่งนำหน้าได้อีก ซึ่งประกอบด้วย

signedunsignedlong

โดยที่คำสั่งนำหน้า มีการใช้ดังนี้
- signed จะกำหนดให้ชนิดข้อมูลนั้น ให้สามารถมีค่าทั้งค่าบวกและค่าลบ อย่างไรก็ตามคำว่า signed อาจไม่ต้องระบุหน้าชนิดข้อมูลก็ได้ เพราะว่าถ้าไม่ระบุภาษาซีจะถือว่าเป็นชนิดข้อมูลที่มี เครื่องหมายอยู่แล้ว
- unsigned จะกำหนดให้ชนิดข้อมูลที่ระบุนั้นมีเฉพาะค่าบวกเท่านั้น ซึ่งส่งผลให้ช่วงของค่า ตัวเลขกว้างขึ้น (เนื่องจากไม่ต้องเสียพื้นที่เพื่อรองรับค่าติดลบ)
- long จะกำหนดให้ชนิดข้อมูลที่ระบุนั้น เป็นแบบขนาดยาว เพื่อรองรับช่วงข้อมูลกว้างมากขึ้น
- short จะกำหนดให้ชนิดข้อมูลที่ระบุนั้น เป็นแบบชนิดสั้น

ตารางแสดงชนิดของข้อมูล

ชนิดข้อมูล ความหมาย ขนาด(bytes) ช่วงข้อมูล(range)
Char อักษรหรืออักขระ 1 0 ถึง 255
unsigned char อักษรหรืออักขระไม่รวมเครื่องหมาย 1 -128 ถึง 127
signed char อักษรหรืออักขระรวมเครื่องหมาย 1 -128 ถึง 127
int จำนวนเต็ม 2 -32,768 ถึง 32,767
4 -2,147,483,648 ถึง 2,147,483,647
unsigned int เลขจำนวนเต็มไม่รวมเครื่องหมาย 2 0 ถึง 65,535
4 0 ถึง 4,294,967,295
unsigned long int เลขจำนวนเต็มแบบยาวไม่รวมเครื่องหมาย 2 0 ถึง 4,294,967,295
unsigned short int เลขจำนวนเต็มแบบสั้น ไม่รวมเครื่องหมาย 2 0 ถึง 65,535
signed int เลขจำนวนเต็มรวมเครื่องหมาย 2 -32,768 ถึง 32,767
short int เลขจำนวนเต็มแบบสั้น 2 -32,768 ถึง 32,767
signed short int เลขจำนวนเต็มแบบสั้น รวมเครื่องหมาย 2 -32,768 ถึง 32,767
long int เลขจำนวนเต็มแบบยาว 4 -2,147,483,648 ถึง 2,147,483,647
signed long int เลขจำนวนเต็มแบบยาว รวมเครื่องหมาย 4 -2,147,483,648 ถึง 2,147,483,647
unsigned long int เลขจำนวนเต็มแบบยาว ไม่รวมเครื่องหมาย 4 0 ถึง 4,294,967,295
float จำนวนจริง(เลขทศนิยม) 4 1.2E-38 ถึง 3.4E+38 (6 decimal places)
double จำนวนจริงละเอียด 2 เท่า 8 2.3E-308 ถึง 1.7E+308 (15 decimal places)
long doubled เลขจำนวนจริง 2 เท่า แบบยาว 10 3.4E-4932 ถึง 1.1E+4932 (18 decimal places)

กลับไปด้านบน