Sejauh ini kita sudah memakai int, double, char, dan std::string tanpa memetakan semuanya. Saatnya melihat gambaran utuh: standar C++ menyediakan sekumpulan tipe fundamental (fundamental types) yang dibawa bahasa sejak lahir — buatan compiler, tanpa #include. Semua tipe lain, dari std::string hingga container pustaka standar, pada akhirnya dibangun di atas fondasi ini. Chapter ini menyusun peta tipe fundamental beserta perannya, menjelaskan istilah tipe objek versus tipe fungsi, dan menutup dengan catatan penting soal ukuran tipe yang ternyata bisa berbeda antar platform.

Peta Tipe Fundamental #

Tabel berikut merangkum seluruh kategori tipe fundamental yang akan kita pakai sepanjang course:

KategoriTipe anggotaMenyimpan
Integral (bilangan bulat)short, int, long, long long, plus varian unsignedbilangan bulat positif dan negatif
Floating-point (pecahan)float, double, long doublebilangan dengan titik desimal
Characterchar, char8_t, char16_t, char32_t, wchar_tsatu karakter atau unit kode teks
Booleanboolhanya true atau false
voidvoid“tidak ada tipe”; untuk fungsi tanpa nilai kembalian

Tiga hal membantu membaca peta ini. Pertama, keluarga integral dan character sebenarnya bersaudara: char pada dasarnya adalah bilangan bulat kecil, sehingga 'A' bisa dihitung. Kedua, setiap tipe integral punya pasangan unsigned (khusus non-negatif) yang kita bedah pada Chapter Signed dan Unsigned. Ketiga, void berperilaku berbeda dari saudaranya: ia tidak menyimpan nilai apa pun dan tidak bisa dipakai untuk mendeklarasikan variabel biasa — pemanfaatannya adalah sebagai tipe kembalian fungsi yang tidak mengembalikan apa pun, seperti void tampilkanMenu(); yang akan banyak kita tulis saat belajar fungsi.

Tipe Objek dan Tipe Fungsi #

Standar C++ memilah tipe fundamental ke dalam dua peran. Tipe objek (object type) adalah tipe yang menghuni memori dan bisa disimpan: variabel int stokBarang; bertipe objek, begitu juga array yang menyusul kemudian. Tipe fungsi (function type) menggambarkan bentuk sebuah fungsi: pasangan tipe kembalian dan daftar parameter. Fungsi main() yang selama ini kita tulis, misalnya, bertipe fungsi int() — kembalian int, tanpa parameter.

Untuk sekarang cukup simpan pembagian ini sebagai kosakata: ketika dokumen resmi menyebut “tipe objek”, ia sedang bicara tentang sesuatu yang menempati memori seperti variabel. Keduanya akan sering muncul di pesan error compiler; mengenali istilahnya membuat pesan itu jauh lebih mudah dibaca. Bagian berikutnya menyentuh satu sifat lagi yang membedakan antar tipe: ukurannya.

Mencoba Setiap Kategori #

Program berikut mendeklarasikan satu variabel untuk tiap kategori tipe fundamental, lalu mencetaknya:

cpp
#include <iostream>

int main() {
    int stokBarang = 42;         // kategori integral
    double beratPaket = 1.85;    // kategori floating-point
    char gradeProduk = 'A';      // kategori character
    bool aktifKurir = true;      // kategori boolean

    std::cout << "Stok barang : " << stokBarang << "\n";
    std::cout << "Berat paket : " << beratPaket << " kg\n";
    std::cout << "Grade       : " << gradeProduk << "\n";
    std::cout << "Aktif       : " << aktifKurir << "\n";

    return 0;
}

Output yang Dihasilkan:

text
Stok barang : 42
Berat paket : 1.85 kg
Grade       : A
Aktif       : 1

Perhatikan baris terakhir: aktifKurir berisi true, tetapi yang tercetak adalah 1. Default-nya std::cout menampilkan bool sebagai angka — 1 untuk true dan 0 untuk false — karena bool memang tipe integral terkecil di balik layar. Manipulator std::boolalpha mengubahnya menjadi teks true/false, dan kita memakainya pada Chapter char dan bool. Selain itu, beratPaket tercetak 1.85 tanpa nol tambahan; format tampilan angka ini pun punya pengaturan yang dibahas di Chapter Floating-Point.

Empat variabel di atas menghabiskan empat kategori sekaligus, dan masing-masing kategori mendapat chapter tersendiri untuk dibedah: integral di Integer, pecahan di Floating-Point, karakter dan boolean di char dan bool. Pendekatan berlapis ini disengaja — peta dulu, lalu turun ke detail satu per satu.

Ukuran Tipe Bisa Berbeda antar Platform #

Satu kejutan terakhir sebelum detail: ukuran tipe fundamental tidak seragam di seluruh dunia. Standar hanya menetapkan ukuran minimum dan aturan relatif (misalnya long tidak boleh lebih kecil dari int), sisanya diserahkan kepada implementasi compiler dan platform. Pada platform course ini (Linux x86-64, g++ 14.2) int berukuran 4 byte dan long 8 byte, tetapi di Windows long hanya 4 byte, dan di banyak mikrokontroler int hanya 2 byte.

Konsekuensi praktisnya: kode yang menyimpan angka besar di long bisa aman di satu mesin lalu meluap di mesin lain. Karena itu kita perlu alat pengukur — operator sizeof dan pustaka <limits> — yang kita pelajari tuntas pada Chapter sizeof dan limits di akhir section ini, lengkap dengan tabel ukuran nyata di platform ini. Sementara itu, mari kita turun ke detail tipe yang paling sering dipakai: bilangan bulat.

Rujukan resmi untuk topik Chapter ini: fundamental types dan type di cppreference.