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