Memahami Tipe Data C: Panduan Lengkap
Tipe data dalam C merujuk pada sistem luas yang digunakan untuk mendeklarasikan variabel atau fungsi dengan tipe yang berbeda. Tipe variabel menentukan seberapa banyak ruang yang ditempati dalam penyimpanan dan bagaimana pola bit yang disimpan ditafsirkan.
Tipe dalam C dapat diklasifikasikan sebagai berikut −
| Sr.No. | Tipe & Deskripsi |
| 1 | Tipe Dasar | Tipe aritmetika dan lebih diklasifikasikan menjadi: (a) tipe integer dan (b) tipe floating-point. |
| 2 | Tipe Enumerasi Tipe aritmetika lagi dan digunakan untuk mendefinisikan variabel yang hanya dapat diberikan nilai integer diskrit tertentu selama program. |
| 3 | Tipe void Penejen tipe void menunjukkan bahwa tidak ada nilai yang tersedia. |
| 4 | Tipe Turunan Mereka mencakup (a) Tipe Pointer, (b) Tipe Array, (c) Tipe Struktur, (d) Tipe Union dan (e) Tipe Fungsi. |
Tipe array dan tipe struktur disebut bersama sebagai tipe agregat. Tipe sebuah fungsi menentukan tipe nilai kembalian fungsi tersebut. Kita akan melihat tipe dasar di bagian berikutnya, sementara tipe lainnya akan dibahas dalam bab-bab mendatang.
Tipe Integer
Tabel berikut memberikan detail tentang tipe integer standar dengan ukuran penyimpanan dan rentang nilainya −
| Tipe | Ukuran Penyimpanan | Rentang Nilai |
| char | 1 byte | -128 hingga 127 atau 0 hingga 255 |
| unsigned char | 1 byte | 0 hingga 255 |
| signed char | 1 byte | -128 hingga 127 |
| int | 2 atau 4 bytes | -32,768 hingga 32,767 atau -2,147,483,648 hingga 2,147,483,647 |
| unsigned int | 2 atau 4 bytes | 0 hingga 65,535 atau 0 hingga 4,294,967,295 |
| short | 2 bytes | -32,768 hingga 32,767 |
| unsigned short | 2 bytes | 0 hingga 65,535 |
| long | 8 bytes atau (4bytes untuk OS 32 bit) | -9223372036854775808 hingga 9223372036854775807 |
| unsigned long | 8 bytes | 0 hingga 18446744073709551615 |
Untuk mendapatkan ukuran tepat dari tipe atau variabel pada platform tertentu, Anda dapat menggunakan operator sizeof. Ekspresi sizeof(type) menghasilkan ukuran penyimpanan objek atau tipe dalam byte. Berikut adalah contoh untuk mendapatkan ukuran berbagai tipe pada mesin menggunakan konstanta yang berbeda yang didefinisikan dalam file header limits.h −
Live Demo
#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; } Saat Anda mengompilasi dan menjalankan program di atas, hasilnya pada Linux adalah sebagai berikut −
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
Tipe Floating-Point
Tabel berikut memberikan detail tentang tipe floating-point standar dengan ukuran penyimpanan dan rentang nilai serta presisi mereka −
| Tipe | Ukuran Penyimpanan | Rentang Nilai | Presisi |
| float | 4 byte | 1.2E-38 hingga 3.4E+38 | 6 tempat desimal |
| double | 8 byte | 2.3E-308 hingga 1.7E+308 | 15 tempat desimal |
| long double | 10 byte | 3.4E-4932 hingga 1.1E+4932 | 19 tempat desimal |
File header float.h mendefinisikan makro yang memungkinkan Anda untuk menggunakan nilai-nilai ini dan detail lain tentang representasi biner bilangan real dalam program Anda. Contoh berikut mencetak ruang penyimpanan yang diambil oleh tipe float dan nilai rentangnya −
Live Demo
#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; } Saat Anda mengompilasi dan menjalankan program di atas, hasilnya pada Linux adalah sebagai berikut −
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
Tipe void
Tipe void menentukan bahwa tidak ada nilai yang tersedia. Digunakan dalam tiga jenis situasi −
| Sr.No. | Tipe & Deskripsi |
| 1 | Fungsi mengembalikan void Ada berbagai fungsi dalam C yang tidak mengembalikan nilai apa pun atau Anda dapat mengatakan mereka mengembalikan void. Fungsi tanpa nilai kembali memiliki tipe kembali void. Misalnya, void exit (int status); |
| 2 | Argumen fungsi sebagai void Ada berbagai fungsi dalam C yang tidak menerima parameter apa pun. Fungsi tanpa parameter dapat menerima void. Misalnya, int rand(void); |
| 3 | Pointer ke void Pointer tipe void * mewakili alamat objek, tetapi tidak tipe-nya. Misalnya, fungsi alokasi memori void *malloc( size_t size ); mengembalikan pointer ke void yang dapat dikonversi ke tipe data apa pun. |