Setiap variabel dalam bahasa C++ dideklarasikan dengan tipe data sesuai
nilai yang akan diberikan. Di antara beberapa tipe data yang ada, ada tipe data yang disebut tipe data dasar seperti float, integer dan sejenisnya. Ada juga tipe data bentukan yang dihasilkan dari pengembangan tipe data dasar tersebut seperti array, pointer, struct, union, string, dan enumerasi.
- Tipe data Boolean (bool)
- Tipe data Character (char)
- Tipe data Integer (int)
- Tipe data float
- Tipe data double
- Tipe data string
- Tipe data enumerasi
- Tipe Data Valueless (void)
Unsigned VS Signed
Tiap tipe data dasar juga punya versi signed dan unsigned. Penambahan signed dan unsigned tidak mengubah ukuran dan rentang nilai suatu tipe data. Walaupun tidak mengubah ukuran nilainya dalam byte, signed dan unsigned akan mempengaruhi awal dan akhir dari nilai yang bisa diberikan.
Unsigned hanya akan menerima nilai positif, dan tidak bisa menyimpan angka negatif. Dengan kata lain, tipe unsigned dimulai dari 0 dengan nilai akhir sekitar 2 kali lipat dari versi signed-nya, walaupun rentang nilainya tetap sama.
Berbeda dengan unsigned, signed dimulai dari bilangan negatif. Contohnya, signed char dan unsigned char sama-sama berukuran 1 byte, walaupun nilai awal dan akhirnya berbeda. Secara default, seharusnya semua tipe data dasar akan bertipe signed.
Tipe data
|
Memori | Rentang nilai | Format Specifier
|
short int
|
2
|
-32,768 .. 32,767
|
%hd
|
unsigned short int
|
2
|
0 .. 65,535
|
%hu
|
unsigned int
|
4
|
0 .. 4,294,967,295
|
%u
|
int
|
4
|
-2,147,483,648 .. 2,147,483,647
|
%d
|
long int
|
4
|
-2,147,483,648 to 2,147,483,647
|
%ld
|
unsigned long int
|
4
|
0 to 4,294,967,295
|
%lu
|
long long int |
8
|
-(2^63)..(2^63)-1
|
%lld
|
unsigned long long int |
8
|
0..18,446,744,073,709,551,615
|
%llu
|
signed char |
1 | -128..127
|
%c
|
unsigned char |
1
|
0..255
|
%c
|
Float |
4
|
%f
|
|
double | 8 | %lf | |
long double |
12
|
%ld
|
Format Specifier
Format Specifier bisa digunakan jika kita ingin menampilkan nilai dengan printf. Contohnya adalah seperti di bawah ini.
#include <iostream>
int main(){
int angka=5;
float nilai;
nilai=6.1;
printf("%d", angka);
printf(" dan ");
printf("%0.3f", nilai);
return 0;
}
Perhatikan!Untuk tipe data int / bilangan bulat, specifier yang digunakan adalah %d. Sedangkan untuk tipe data float bilangan pecahan desimal, format specifier yang digunakan adalah %f.
Kita bisa menyelipkan angka yang menandakan jumlah digit minimal dan juga jumlah desimalnya. Angka sebelum titik menandakan jumlah digit minimal, dan angka setelah titik menandakan jumlah digit di belakang koma.
"%2.3f" menandakan jika digit minimalnya ada dua, dan ada tiga digit di belakang koma. Jika jumlah digitnya kurang dari digit minimal, akan ada penambahan spasi.
Contoh di atas bisa juga dipersingkat sehingga menjadi seperti di bawah ini.
#include <stdio.h>
int main(){
int angka=5;
float nilai;
nilai=6.1;
printf("%d dan %0.3f", angka, nilai);
printf(" ");
return 0;
}
Dalam bahasa C dan C++, angka dan karaker disimpan dengan cara yang sama. Karakter disimpan dalam bentuk angka sesuai dengan kode ASCII-nya. Contohnya, huruf 'A' disimpan sebagai angka 65. Jadi angka 65 dan 'A' sebenarnya adalah nilai yang sama.Kita bisa menentukan apakah suatu variabel ditampilkan berdasarkan angkanya, atau kode ASCII-nya. Bahkan, jika mau kita juga bisa menampilkan angkanya dalam bentuk bilangan hexadesimal.
#include <stdio.h>
int main(){
int angka=65;
printf("Bilangan bulat desimal : %d\n", angka);
printf("karakter : %c\n", angka);
printf("Bilangan hexadesimal : %x\n", angka);
return 0;
}
Dari hasil kode program di atas, kalian bisa melihat bahwa sekalipun yang ditampilkan adalah variabel yang sama, apa yang akan terlihat ditentukan oleh format specifiernya. Selain dengan menulisnya sebagai angka, karakter juga bisa ditulis dengan mengapit satu karakter di antara tanda kutip tunggal(').
Pada contoh di atas saya sengaja menukar format specifier untuk karakter dan format specifier untuk bilangan bulat. Sekalipun nilai yang disimpan berbeda, pada akhirnya format specifierlah yang akan menentukan hasilnya.
Mendeklarasikan Tipe Data Baru dengan Typedef
Pada contoh di atas saya sengaja menukar format specifier untuk karakter dan format specifier untuk bilangan bulat. Sekalipun nilai yang disimpan berbeda, pada akhirnya format specifierlah yang akan menentukan hasilnya.
Mendeklarasikan Tipe Data Baru dengan Typedef
Selain menggunakan tipe data yang sudah ada, kita juga bisa mendeklarasikan tipe data baru dari tipe data yang sudah
ada. Untuk mendeklarasikan tipe data buatan kita sendiri, kita bisa
mengawali deklarasi tipe data buatan kita dengan kata "typedef". Contoh :
#include <stdio.h>
typedef char stringku[256];
int main(){
stringku kalimat1="Halo";
stringku kalimat2="dunia";
printf("%s %s!", kalimat1, kalimat2);
return 0;
}
Setelah tipe data baru dibuat, kita bisa menggunakan tipe data buatan kita di dalam deklarasi variabel. Pada
contoh di atas, kata adalah tipe data bentukan kita sendiri yang
berasal dari array dengan tipe data char.