Bilangan bulat adalah tipe data yang paling sering kita pegang: jumlah barang, indeks, tahun, skor, hingga id pengguna. C++ menyediakan empat tipe integer utama yang berbeda pada rentang nilai yang sanggup ditampung, plus pilihan penulisan literal dalam empat basis angka. Chapter ini memetakan keempat tipe beserta jaminan ukuran minimalnya menurut standar, lalu melatih penulisan literal desimal, oktal, heksadesimal, dan biner — termasuk fitur digit separator yang membuat angka panjang jauh lebih mudah dibaca.
Empat Tipe Integer Utama #
| Tipe | Ukuran minimal menurut standar | Umumnya di Linux x86-64 |
|---|---|---|
short | 16 bit | 16 bit (2 byte) |
int | 16 bit | 32 bit (4 byte) |
long | 32 bit | 64 bit (8 byte) |
long long | 64 bit | 64 bit (8 byte) |
Tabel ini menawarkan dua pelajaran sekaligus. Pertama, standar hanya menjamin ukuran minimum: int secara resmi boleh berukuran 16 bit, meskipun praktis semua platform modern memberinya 32 bit. Kedua, aturan relatifnya berlaku bertingkat — long tidak boleh lebih kecil dari int, dan long long tidak boleh lebih kecil dari long — sehingga urutan kapasitasnya selalu terjaga meski ukuran persisnya berbeda antar platform. Pada platform Windows, long hanya 32 bit, sementara di Linux x86-64 ia 64 bit; perbedaan inilah yang membuat alat ukur seperti sizeof (Chapter sizeof dan limits) menjadi penting ketika kode harus lintas platform.
Aturan praktis pemilihan: pakai int sebagai default, long long saat angka bisa melebihi sekitar dua miliar, dan short hanya saat memori benar-benar sempit — misalnya jutaan elemen data di perangkat embedded. Setiap tipe juga punya pasangan unsigned yang menolak nilai negatif demi rentang positif dua kali lipat; itu topik penuh Chapter Signed dan Unsigned.
Penulisan Literal Integer #
Angka yang ditulis langsung di kode disebut literal. C++ mengizinkan empat basis penulisan — desimal, oktal (basis 8, diawali 0), heksadesimal (basis 16, diawali 0x), dan biner (basis 2, diawali 0b, resmi sejak C++14) — serta digit separator berupa apostrof ' yang juga resmi sejak C++14. Program berikut mencoba semuanya:
#include <iostream>
int main() {
short tahunRilis = 1998; // bilangan kecil
int pendapatan = 1'250'000; // digit separator sejak C++14
long jarakKeBintang = 94'607'000'000'000L; // suffix L: pasti long
long long populasiSel = 37'200'000'000'000LL;
std::cout << "Tahun rilis : " << tahunRilis << "\n";
std::cout << "Pendapatan : " << pendapatan << "\n";
std::cout << "Jarak bintang : " << jarakKeBintang << " km\n";
std::cout << "Populasi sel : " << populasiSel << "\n";
// Empat penulisan berbeda, satu nilai yang sama
std::cout << 255 << " " << 0377 << " " << 0xFF << " " << 0b1111'1111 << "\n";
return 0;
}Output yang Dihasilkan:
Tahun rilis : 1998
Pendapatan : 1250000
Jarak bintang : 94607000000000 km
Populasi sel : 37200000000000
255 255 255 255Poin-poin yang layak digarisbawahi:
- Digit separator pada
1'250'000murni untuk keterbacaan; compiler mengabaikannya dan nilai yang tersimpan tetap1250000. Pemisahan bebas — boleh tiap tiga digit, boleh tidak — tetapi kelompok tiga digit paling lazim untuk angka desimal, sedangkan heksadesimal biasanya dikelompokkan dua atau empat digit seperti0xFF'FF'FF. - Suffix
Lpada94'607'000'000'000Lmenetapkan tipe literal menjadilong, danLLmenjadilong long. Tanpa suffix, compiler menentukan sendiri tipe literal terkecil yang muat — perilaku yang biasanya benar, tetapi suffix membuat niat kita eksplisit. - Baris terakhir adalah pelajaran paling penting:
255,0377,0xFF, dan0b1111'1111adalah empat penulisan untuk nilai yang sama persis. Basis hanya memengaruhi cara kita menulis di source code; begitu tersimpan di memori, semuanya adalah bilangan biner yang sama, danstd::coutselalu mencetaknya kembali dalam desimal.
Rangkaian literal ini punya pasangan untuk bilangan pecahan dengan aturan tambahan berupa suffix f dan notasi eksponensial. Itulah bahan Chapter berikutnya: keluarga floating-point.
Rujukan resmi untuk topik Chapter ini: integer literal dan fundamental types di cppreference.