ชนิดข้อมูลในภาษา c หมายถึงระบบที่ครอบคลุมซึ่งใช้สำหรับการประกาศตัวแปรหรือฟังก์ชันประเภทต่างๆ ประเภทของตัวแปรกำหนดว่าจะใช้พื้นที่ในการจัดเก็บเท่าใดและจะตีความรูปแบบบิตที่เก็บไว้อย่างไร
ชนิดข้อมูลในภาษา C สามารถจำแนกได้ดังนี้ −
Sr.No. | Types & Description |
---|---|
1 | Basic Types เป็นชนิดเลขคณิตและแบ่งออกเป็น: (a) ชนิดเลขจำนวนเต็มและ (b) ชนิดเลขทศนิยม |
2 | Enumerated types พวกมันเป็นชนิดเลขคณิตอีกครั้งและใช้เพื่อกำหนดตัวแปรที่สามารถกำหนดค่าจำนวนเต็มแบบไม่ต่อเนื่องบางค่า ได้ตลอดทั้งโปรแกรม |
3 | The type void ตัวระบุประเภท void แสดงว่าไม่มีค่า |
4 | Derived types ประกอบด้วย (a) ชนิดพอยน์เตอร์ (b) ชนิดอาร์เรย์ (c) ชนิดโครงสร้าง (d) ชนิดยูเนียนและ (e) ชนิดฟังก์ชัน |
ชนิดอาร์เรย์และชนิดโครงสร้างจะเรียกรวมกันว่าเป็นชนิดรวม ชนิดของฟังก์ชันจะระบุชนิดของค่าที่ส่งกลับของฟังก์ชัน เราจะเห็นชนิดพื้นฐานในส่วนต่อไปนี้ ซึ่งจะกล่าวถึงชนิดอื่นๆ ในบทต่อๆ ไป
Integer Types (ชนิดเลขจำนวนเต็ม)
ตารางต่อไปนี้แสดงรายละเอียดของชนิดจำนวนเต็มมาตรฐานพร้อมขนาดการจัดเก็บและช่วงค่า −
Type | Storage size | Value range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 8 bytes or (4bytes for 32 bit OS) | -9223372036854775808 to 9223372036854775807 |
unsigned long | 8 bytes | 0 to 18446744073709551615 |
หากต้องการทราบขนาดที่แน่นอนของชนิดหรือตัวแปรบนแพลตฟอร์มใดแพลตฟอร์มหนึ่ง คุณสามารถใช้ตัวดำเนินการ sizeof นิพจน์ sizeof(type) ให้แสดงขนาดหน่วยเก็บข้อมูลของอ็อบเจ็กต์หรือชนิดเป็นไบต์ ด้านล่างนี้คือตัวอย่างโค้ดเพื่อให้ได้ขนาดของชนิดต่าง ๆ บนเครื่องโดยใช้ค่าคงที่ที่แตกต่างกันซึ่งกำหนดไว้ในไฟล์ส่วนหัวของ limit.h:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
printf("CHAR_BIT : %d\n", CHAR_BIT);
printf("CHAR_MAX : %d\n", CHAR_MAX);
printf("CHAR_MIN : %d\n", CHAR_MIN);
printf("INT_MAX : %d\n", INT_MAX);
printf("INT_MIN : %d\n", INT_MIN);
printf("LONG_MAX : %ld\n", (long) LONG_MAX);
printf("LONG_MIN : %ld\n", (long) LONG_MIN);
printf("SCHAR_MAX : %d\n", SCHAR_MAX);
printf("SCHAR_MIN : %d\n", SCHAR_MIN);
printf("SHRT_MAX : %d\n", SHRT_MAX);
printf("SHRT_MIN : %d\n", SHRT_MIN);
printf("UCHAR_MAX : %d\n", UCHAR_MAX);
printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
return 0;
}
เมื่อคุณคอมไพล์และรันโปรแกรมข้างบน มันจะให้ผลลัพธ์ต่อไปนี้

Floating-Point Types (ชนิดเลขทศนิยม)
ตารางต่อไปนี้แสดงรายละเอียดของชนิดเลขทศนิยมมาตรฐานพร้อมขนาดการจัดเก็บและช่วงค่าและความแม่นยำ
Type | Storage size | Value range | Precision |
---|---|---|---|
float | 4 byte | 1.2E-38 to 3.4E+38 | 6 decimal places |
double | 8 byte | 2.3E-308 to 1.7E+308 | 15 decimal places |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 | 19 decimal places |
ไฟล์ส่วนหัว float.h กำหนดมาโครที่ช่วยให้คุณใช้ค่าเหล่านี้และรายละเอียดอื่นๆ เกี่ยวกับการแทนค่าไบนารีของตัวเลขจริงในโปรแกรมของคุณ ตัวอย่างต่อไปนี้พิมพ์พื้นที่จัดเก็บที่ใช้โดย ชนิด float และค่าช่วงของมัน −
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
printf("Storage size for float : %d \n", sizeof(float));
printf("FLT_MAX : %g\n", (float) FLT_MAX);
printf("FLT_MIN : %g\n", (float) FLT_MIN);
printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
printf("DBL_MAX : %g\n", (double) DBL_MAX);
printf("DBL_MIN : %g\n", (double) DBL_MIN);
printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
printf("Precision value: %d\n", FLT_DIG );
return 0;
}
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันจะให้ผลลัพธ์ต่อไปนี้

The void Type
ชนิด void ระบุว่าไม่มีค่า ใช้ในสถานการณ์ 3 ชนิด −
−
Sr.No. | Types & Description |
---|---|
1 | Function returns as void มีฟังก์ชันชนิดต่างๆ ใน C ที่ไม่คืนค่าใดๆ หรือคุณสามารถพูดได้ว่าคืนค่าเป็น void ฟังก์ชันที่ไม่มีค่าส่งคืนจะมีชนิดการส่งคืนเป็น void ตัวอย่างเช่น void exit (int status); |
2 | Function arguments as void มีฟังก์ชันต่าง ๆ ใน C ซึ่งไม่ยอมรับพารามิเตอร์ใด ๆ แต่ฟังก์ชันที่ไม่มีพารามิเตอร์สามารถยอมรับ void ได้ ตัวอย่างเช่น int rand(void); |
3 | Pointers to void ตัวชี้ชนิดเป็น void * หมายถึงที่อยู่ของวัตถุ ชนิดไม่ใช่ชนิดของวัตถุ ตัวอย่างเช่น ฟังก์ชันการจัดสรรหน่วยความจำ void *malloc( size_t size ); ส่งคืนตัวชี้เป็นvoid ซึ่งสามารถส่งไปยังชนิดข้อมูลใดก็ได้ |