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

ชนิดข้อมูลในภาษา C สามารถจำแนกได้ดังนี้ −

Sr.No.Types & Description
1Basic Types
เป็นชนิดเลขคณิตและแบ่งออกเป็น: (a) ชนิดเลขจำนวนเต็มและ (b) ชนิดเลขทศนิยม
2Enumerated types
พวกมันเป็นชนิดเลขคณิตอีกครั้งและใช้เพื่อกำหนดตัวแปรที่สามารถกำหนดค่าจำนวนเต็มแบบไม่ต่อเนื่องบางค่า ได้ตลอดทั้งโปรแกรม
3The type void
ตัวระบุประเภท void แสดงว่าไม่มีค่า
4Derived types
ประกอบด้วย (a) ชนิดพอยน์เตอร์ (b) ชนิดอาร์เรย์ (c) ชนิดโครงสร้าง (d) ชนิดยูเนียนและ (e) ชนิดฟังก์ชัน

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

Integer Types (ชนิดเลขจำนวนเต็ม)


ตารางต่อไปนี้แสดงรายละเอียดของชนิดจำนวนเต็มมาตรฐานพร้อมขนาดการจัดเก็บและช่วงค่า −

TypeStorage sizeValue range
char1 byte-128 to 127 or 0 to 255
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int2 or 4 bytes-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295
short2 bytes-32,768 to 32,767
unsigned short2 bytes0 to 65,535
long8 bytes or (4bytes for 32 bit OS)-9223372036854775808 to 9223372036854775807
unsigned long8 bytes0 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 (ชนิดเลขทศนิยม)


ตารางต่อไปนี้แสดงรายละเอียดของชนิดเลขทศนิยมมาตรฐานพร้อมขนาดการจัดเก็บและช่วงค่าและความแม่นยำ

TypeStorage sizeValue rangePrecision
float4 byte1.2E-38 to 3.4E+386 decimal places
double8 byte2.3E-308 to 1.7E+30815 decimal places
long double10 byte3.4E-4932 to 1.1E+493219 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
1Function returns as void
มีฟังก์ชันชนิดต่างๆ ใน ​​C ที่ไม่คืนค่าใดๆ หรือคุณสามารถพูดได้ว่าคืนค่าเป็น void ฟังก์ชันที่ไม่มีค่าส่งคืนจะมีชนิดการส่งคืนเป็น void ตัวอย่างเช่น void exit (int status);
2Function arguments as void
มีฟังก์ชันต่าง ๆ ใน C ซึ่งไม่ยอมรับพารามิเตอร์ใด ๆ แต่ฟังก์ชันที่ไม่มีพารามิเตอร์สามารถยอมรับ void ได้ ตัวอย่างเช่น int rand(void);
3Pointers to void
ตัวชี้ชนิดเป็น void * หมายถึงที่อยู่ของวัตถุ ชนิดไม่ใช่ชนิดของวัตถุ ตัวอย่างเช่น ฟังก์ชันการจัดสรรหน่วยความจำ void *malloc( size_t size ); ส่งคืนตัวชี้เป็นvoid ซึ่งสามารถส่งไปยังชนิดข้อมูลใดก็ได้

Leave a Reply

Your email address will not be published. Required fields are marked *