🧬 Data Type in C

int, float, char, double, dan lainnya — fondasi penyimpanan data

Tipe data (data type) adalah klasifikasi yang menentukan jenis data yang dapat disimpan dalam sebuah variabel, ukuran memori yang dibutuhkan, serta operasi apa saja yang boleh dilakukan terhadap data tersebut.

Setiap variabel di C wajib memiliki tipe data. Tipe data memberitahu compiler bagaimana menafsirkan bit-bit di dalam memori.


📌 1. Mengapa Tipe Data Diperlukan?

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:

int x = 65; // Ditampilkan sebagai ANGKA: 65 printf("%d", x); // 65
char c = 65; // Ditampilkan sebagai KARKTER: 'A' printf("%c", c); // A

📌 Nilai yang sama, tipe berbeda → penafsiran berbeda. Itulah mengapa tipe data penting.


📌 2. Basic (Fundamental) Data Types

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
⚠️ Ukuran di atas adalah nilai umum untuk sistem 32/64-bit. Untuk ukuran pasti di sistem Anda, gunakan operator sizeof.
int

Angka bulat (integer).

int umur = 21;
int suhu = -5;
float / double

Angka desimal (pecahan).

float pi = 3.14f;
double ipk = 3.85;
char

Satu karakter, ditulis dengan tanda kutip tunggal.

char grade = 'A';
char simbol = '@';

📌 3. Derived Data Types

Tipe data turunan dibangun dari tipe dasar. Yang paling sering dipakai:

Pointer

Menyimpan alamat memori.

int x = 10;
int *p = &x;

Dipelajari mendalam di bagian Pointer in C.

Array

Kumpulan nilai bertipe sama.

int nilai[5];
char nama[20];

Dipelajari di bagian Compound Data Types.


📌 4. Type Modifiers

Kata kunci tambahan untuk mengubah ukuran atau tanda (sign) dari tipe dasar:

ModifierFungsiContoh
signedBoleh negatif & positif (default)signed int x = -5;
unsignedHanya nilai ≥ 0unsigned int x = 10;
shortLebih kecil dari tipe dasarshort int x = 100;
longLebih besar dari tipe dasarlong int x = 100000;
// signed vs unsigned signed int a = -10; // boleh unsigned int b = -10; // error / wrap
// short & long short int s = 32767; // max short (2 byte) long int l = 2147483647; // max long (4 byte)

📌 5. Contoh: Mengenal Tipe Data & sizeof

Cobalah jalankan kode di bawah ini untuk melihat ukuran dan output tiap tipe data:

Output:

📌 6. Format Specifier (printf & scanf)

Setiap tipe data memiliki format specifier khusus agar ditampilkan/dibaca dengan benar:

Tipe DataprintfscanfKeterangan
int%d%dInteger desimal
float%f%fDesimal (float)
double%f%lfDesimal (double)
char%c%cSatu karakter
unsigned int%u%uInteger tanpa tanda
long int%ld%ldInteger panjang
String (char[])%s%sKumpulan karakter
💡 Presisi desimal: printf("%.2f", 3.14159); → menampilkan 3.14 (2 angka di belakang koma).

📌 7. Type Conversion (Konversi Tipe)

Implicit (Otomatis)

Compiler mengonversi otomatis, biasanya dari tipe kecil ke tipe besar.

int a = 5; float b = a; // b jadi 5.0
Explicit (Casting)

Konversi manual dengan (tipe).

float f = 5.9; int i = (int) f; // i = 5 (dibulatkan ke bawah)
⚠️ Jebak Klasik: Integer Division
int a = 5, b = 2; int hasil = a / b; // 5 / 2 = 2 (koma dibuang!) printf("%d", hasil); // 2
int a = 5, b = 2; float hasil = (float) a / b; // 5.0 / 2 = 2.5 printf("%.1f", hasil); // 2.5

🎓 Kesimpulan

  • Tipe data menentukan jenis data, ukuran memori, dan operasi yang diizinkan
  • Basic types: int, float, double, char, void
  • Derived types: pointer dan array
  • Modifier: signed, unsigned, short, long
  • Pakai format specifier yang benar: %d, %f, %c, %s
  • Konversi: implicit (otomatis) & explicit (casting)

🧠 Latihan

Pilih tipe data yang paling tepat:

  1. Umur mahasiswa (21) → int
  2. IPK (3.85) → double
  3. Grade ('A') → char
  4. Jumlah siswa (selalu ≥ 0) → unsigned int
  5. Konstanta π (presisi tinggi) → double

Tentukan output:

int x = 7; printf("%d", x / 2); // ? printf("%c", 66); // ?

Jawaban: 3 (integer division) dan B (ASCII 66).