int, float, char, double, dan lainnya — fondasi penyimpanan data
Setiap variabel di C wajib memiliki tipe data. Tipe data memberitahu compiler bagaimana menafsirkan bit-bit di dalam memori.
Di dalam memori, semua data hanyalah deretan bit (0 dan 1). Tanpa tipe data, compiler tidak tahu bagaimana menafsirkan bit-bit tersebut.
Contoh: nilai 65 bisa ditafsirkan berbeda tergantung tipenya:
📌 Nilai yang sama, tipe berbeda → penafsiran berbeda. Itulah mengapa tipe data penting.
Tipe data dasar adalah tipe yang disediakan langsung oleh bahasa C:
| Tipe | Ukuran (umum) | Range / Kapasitas | Contoh Nilai |
|---|---|---|---|
int |
2 atau 4 byte | -2,147,483,648 s.d. 2,147,483,647 (4 byte) | 42, -7, 0 |
float |
4 byte | ±3.4 × 1038 (6-7 digit presisi) | 3.14f, -0.5f |
double |
8 byte | ±1.7 × 10308 (15-16 digit presisi) | 3.14159265358979 |
char |
1 byte | -128 s.d. 127 (atau 0-255) | 'A', '7', '@' |
void |
- | Tidak menyimpan nilai | Fungsi tanpa return |
sizeof.
Angka bulat (integer).
int umur = 21;int suhu = -5;
Angka desimal (pecahan).
float pi = 3.14f;double ipk = 3.85;
Satu karakter, ditulis dengan tanda kutip tunggal.
char grade = 'A';char simbol = '@';
Tipe data turunan dibangun dari tipe dasar. Yang paling sering dipakai:
Menyimpan alamat memori.
int x = 10;int *p = &x;
Dipelajari mendalam di bagian Pointer in C.
Kumpulan nilai bertipe sama.
int nilai[5];char nama[20];
Dipelajari di bagian Compound Data Types.
Kata kunci tambahan untuk mengubah ukuran atau tanda (sign) dari tipe dasar:
| Modifier | Fungsi | Contoh |
|---|---|---|
signed | Boleh negatif & positif (default) | signed int x = -5; |
unsigned | Hanya nilai ≥ 0 | unsigned int x = 10; |
short | Lebih kecil dari tipe dasar | short int x = 100; |
long | Lebih besar dari tipe dasar | long int x = 100000; |
Cobalah jalankan kode di bawah ini untuk melihat ukuran dan output tiap tipe data:
Setiap tipe data memiliki format specifier khusus agar ditampilkan/dibaca dengan benar:
| Tipe Data | printf | scanf | Keterangan |
|---|---|---|---|
int | %d | %d | Integer desimal |
float | %f | %f | Desimal (float) |
double | %f | %lf | Desimal (double) |
char | %c | %c | Satu karakter |
unsigned int | %u | %u | Integer tanpa tanda |
long int | %ld | %ld | Integer panjang |
| String (char[]) | %s | %s | Kumpulan karakter |
printf("%.2f", 3.14159); → menampilkan 3.14 (2 angka di belakang koma).
Compiler mengonversi otomatis, biasanya dari tipe kecil ke tipe besar.
Konversi manual dengan (tipe).
int, float, double, char, voidsigned, unsigned, short, long%d, %f, %c, %sPilih tipe data yang paling tepat:
Tentukan output:
Jawaban: 3 (integer division) dan B (ASCII 66).