Variabel dan Tipe C++:int, double, char, string, bool
Variabel dalam C++
Variabel C++ memberi kita kemampuan penyimpanan bernama. Hal ini memungkinkan programmer untuk memanipulasi data sesuai kebutuhan. Setiap variabel memiliki tipe dalam C++. Jenis variabel membantu menentukan ukuran dan tata letak peta memori variabel, rentang nilai yang dapat disimpan dalam memori tersebut, dan rangkaian operasi yang dapat diterapkan padanya.
Dalam tutorial C++ ini, Anda akan belajar:
Variabel dalam C++
Tipe Dasar Variabel dalam C++
Aturan Mendeklarasikan Variabel dalam C++
Tipe Data Variabel C++
Nama Variabel atau Pengenal
Kualifikasi Const di C++
Cakupan Variabel dalam C++
Konversi Jenis Variabel
Mendaftarkan Variabel
Urutan Escape
Tipe Dasar Variabel dalam C++
Berikut adalah tipe dasar variabel C++:
Int:
Integer adalah literal numerik (terkait dengan angka) tanpa bagian pecahan atau eksponensial. Contoh. 120, -90, dll.
Ganda:
Ini adalah nilai floating point presisi ganda. Contoh:11,22, 2,345
Karakter:
Karakter literal dibuat dengan melampirkan satu karakter di dalam tanda kutip tunggal. Misalnya:'a', 'm', 'F', 'P', '}' dll.
Mengambang:
Literal titik-mengambang adalah literal numerik yang memiliki bentuk pecahan atau bentuk eksponen. Misalnya:1.3, 2.6
Literal String:
Literal string adalah urutan karakter yang diapit oleh tanda kutip ganda. Misalnya:“Apa kabar?”
Bool:
Ini memegang nilai Boolean benar atau salah.
Aturan Mendeklarasikan Variabel dalam C++
Berikut adalah beberapa aturan umum untuk penamaan variabel:
Nama variabel C++ hanya boleh memiliki huruf, angka, dan garis bawah.
Nama variabel C++ tidak boleh diawali dengan angka.
Nama variabel tidak boleh dimulai dengan karakter huruf besar.
Nama variabel yang digunakan dalam C++ tidak boleh berupa kata kunci. Misalnya, int adalah kata kunci yang digunakan untuk menunjukkan bilangan bulat.
Nama variabel C++ dapat dimulai dengan garis bawah. Namun, itu tidak dianggap sebagai praktik yang baik.
Tipe Data Variabel C++
C++ mendefinisikan seluruh rangkaian tipe primitif
kekosongan type tidak memiliki nilai yang terkait dengannya dan hanya dapat digunakan dalam beberapa keadaan. Ini paling sering sebagai tipe pengembalian fungsi yang tidak mengembalikan nilai.
Jenis aritmatika termasuk karakter, bilangan bulat, nilai Boolean, dan angka floating-point. Jenis aritmatika jika dibagi lagi menjadi 2 kategori
Jenis titik-mengambang . Float (atau tipe mengambang) mewakili angka desimal. Standar IEEE menentukan jumlah minimum digit signifikan. Kebanyakan kompiler biasanya memberikan presisi lebih dari minimum yang ditentukan. Biasanya, float direpresentasikan dalam 32 bit, double dalam 64 bit, dan long double dalam 96 atau 128 bit.
Jenis integral (yang mencakup karakter, bilangan bulat, dan tipe Boolean). Boolean type hanya memiliki dua jenis nilai:True atau False. Ada beberapa char jenis, yang sebagian besar ada untuk mendukung internasionalisasi. Tipe karakter paling dasar adalah char. Sebuah char berukuran sama dengan satu byte mesin yang berarti satu byte.
Jenis integral dapat ditandatangani atau tidak ditandatangani.
Jenis yang Ditandatangani :Mereka mewakili angka negatif atau positif (termasuk nol). Dalam tipe yang ditandatangani, rentang harus dibagi rata antara nilai +ve dan -ve. Dengan demikian, karakter bertanda 8-bit akan menyimpan nilai dari –127 hingga 127.
Jenis Tidak Ditandatangani :Dalam tipe unsigned, semua nilai adalah>=0. Karakter unsigned 8-bit dapat berisi 0 hingga 255 (keduanya inklusif).
Nama Variabel atau Pengidentifikasi
Pengidentifikasi dapat terdiri dari beberapa huruf, angka, dan karakter garis bawah atau beberapa kombinasinya. Tidak ada batasan yang dikenakan pada panjang nama.
Pengidentifikasi harus
diawali dengan huruf atau garis bawah (‘_’).
Dan peka huruf besar/kecil; huruf besar dan huruf kecil berbeda:
// mendefinisikan empat variabel int yang berbeda
int guru99, gurU99, GuRu99, GURU99;
Bahasa C++ telah mencadangkan beberapa nama untuk penggunaannya.
Ada banyak konvensi yang diterima untuk penamaan variabel dalam bahasa pemrograman yang berbeda. Mengikuti konvensi ini dapat meningkatkan keterbacaan program.
Pengidentifikasi harus memberikan setidaknya beberapa indikasi maknanya.
Nama variabel biasanya huruf kecil—guru99, bukan Guru99 atau GURU99.
Kelas yang kita definisikan biasanya dimulai dengan huruf besar.
Identifier yang berisi beberapa kata harus membedakan setiap kata secara visual. Misalnya, guru99_website bukan guru99website.
Deklarasi dan Definisi Variabel C++
Deklarasi variabel membuat nama program diketahui dalam lingkup di mana ia didefinisikan. Contoh:
int a=5;
int b;
char c='A';
int a,b;
a=b=1000;
List initialization
int a(5);
int b{5};
Qualifier Const di C++
Misalkan ada variabel buffsize yang menyatakan jumlah input yang akan diambil dari pengguna. Di sini, kami tidak ingin mengubah nilai buffsize di seluruh program. Kami ingin mendefinisikan variabel yang nilainya kami tahu tidak boleh diubah.
Dalam kasus seperti itu, gunakan kata kunci const
const int bufSize = 512; // input buffer size
Ini mendefinisikan bufSize sebagai konstanta. Setiap upaya untuk menetapkan atau mengubah bufSize memberikan kesalahan.
Di sini, kita tidak dapat mengubah nilai objek const setelah kita membuatnya, itu harus dideklarasikan dan diinisialisasi wajib. Kalau tidak, kompiler melempar kesalahan.
const int i = get_size(); // ok: initialized at run time
const int j = 42; // ok: initialized at compile time
const int k; // error: k is uninitialized const
int i = 42;
const int ci = i; // ok: the value in i is copied into ci
Cakupan Variabel dalam C++
Ruang lingkup adalah rentang program di mana variabel memiliki arti. Sebagian besar nama yang sama dapat digunakan untuk merujuk ke entitas yang berbeda dalam lingkup yang berbeda. Variabel terlihat dari titik di mana mereka dideklarasikan sampai akhir lingkup di mana deklarasi mereka muncul.
#include <iostream>
int main()
{
int sum = 0;
// sum values from 1 through 10 inclusive
for (int val = 1; val <= 10; ++val)
sum += val; // equivalent to sum = sum + val
cout << "Sum of 1 to 10 inclusive is "<< sum <<endl;
return 0;
}
Program ini mendefinisikan 3 nama, yaitu, main, sum, dan val. Ia menggunakan namespace name std, bersama dengan dua nama lain dari namespace itu—cout dan endl.
Nama fungsi “main” didefinisikan di luar kurung kurawal. Nama fungsi utama—seperti kebanyakan nama lain yang didefinisikan di luar fungsi—memiliki cakupan global. Artinya, setelah dideklarasikan, nama-nama yang berada di lingkup global dapat diakses di seluruh program.
Jumlah variabel didefinisikan dalam lingkup blok yang merupakan badan dari fungsi utama. Itu dapat diakses dari titik deklarasinya dan di seluruh badan fungsi utama lainnya. Namun, tidak di luar itu. Ini berarti jumlah variabel memiliki cakupan blok .
Variabel val didefinisikan dalam lingkup “untuk pernyataan”. Itu dapat dengan mudah digunakan dalam pernyataan itu tetapi tidak di tempat lain di fungsi utama. Ini memiliki cakupan lokal .
Cakupan Tersarang
Lingkup dapat berisi lingkup lain. Ruang lingkup yang terkandung (atau bersarang) disebut sebagai ruang lingkup dalam. Lingkup yang berisi adalah lingkup luar.
#include <iostream>
using namespace std;
// Program for illustration purposes only: It is bad style for a function
// to use a global variable and also define a local variable with the same name
int reused = 42; // reused has global scope
int main()
{
int unique = 0; // unique has block scope
// output #1: uses global reused; prints 42 0
cout << reused << " " << unique << endl;
int reused = 0; // new, local object named reused hides global reused
// output #2: uses local reused; prints 0 0
cout << reused << " " << unique << endl;
// output #3: explicitly requests the global reused; prints 42 0
cout << ::reused << " " << unique << endl;
return 0;
}
Keluaran #1 muncul sebelum definisi lokal digunakan kembali. Jadi, keluaran ini
pernyataan adalah salah satu yang menggunakan nama yang digunakan kembali yang didefinisikan dalam lingkup global. Pernyataan ini menghasilkan
42 0
Keluaran #2 terjadi setelah definisi lokal digunakan kembali. Sekarang dalam ruang lingkup. Oleh karena itu, pernyataan keluaran kedua ini hanya menggunakan objek lokal bernama reused daripada objek global dan keluaran
0 0
Keluaran #3 menimpa aturan pelingkupan default menggunakan operator cakupan. Lingkup global tidak memiliki nama. Jadi, ketika operator ruang lingkup(::) memiliki sisi kiri yang kosong. Ini menafsirkannya sebagai permintaan untuk mengambil nama di sisi kanan lingkup global. Dengan demikian, ekspresi menggunakan global reused dan output
42 0
Konversi Jenis Variabel
Variabel dari satu jenis dapat diubah menjadi yang lain. Ini dikenal sebagai "Konversi Jenis." Mari kita lihat aturan untuk mengonversi tipe variabel C++ yang berbeda:
Menetapkan non-bool ke variabel bool menghasilkan false jika nilainya 0 dan true sebaliknya.
bool b = 42; // b is true
Menetapkan bool ke salah satu tipe aritmatika lainnya menghasilkan 1 jika bool benar dan 0 jika bool salah.
bool b = true;
int i = b; // i has value 1
Menetapkan nilai floating-point ke variabel tipe int menghasilkan nilai yang terpotong. Nilai yang disimpan adalah bagian sebelum koma.
int i = 3.14; // i has value 3
Menetapkan nilai int ke variabel tipe float menghasilkan bagian pecahan menjadi nol. Presisi biasanya hilang jika bilangan bulat memiliki lebih banyak bit daripada yang dapat ditampung oleh variabel mengambang.
Int i=3;
double pi = i; // pi has value 3.0
Jika kita mencoba menetapkan nilai di luar rentang ke variabel bertipe tidak bertanda, hasilnya adalah sisa nilai %(modulo)
Misalnya, tipe karakter tidak bertanda 8-bit dapat menyimpan nilai dari 0 hingga 255, inklusif. Menetapkan nilai di luar rentang ini akan mengakibatkan kompiler menetapkan sisa nilai itu modulo 256. Oleh karena itu, dengan logika di atas, penetapan -1 ke char 8-bit yang tidak ditandatangani memberi objek itu nilai 255.
unsigned char c = -1; // assuming 8-bit chars, c has value 255
Jika kami mencoba menetapkan nilai di luar rentang ke objek bertipe bertanda, hasilnya tidak dapat diprediksi. Ini tidak terdefinisi. Program mungkin tampak berfungsi di luar, atau mungkin macet, atau mungkin menghasilkan nilai sampah.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined
Kompilator menerapkan jenis konversi yang sama ini saat kita menggunakan nilai dari satu jenis di mana nilai jenis lain diharapkan.
int i = 42;
if (i) // condition will evaluate as true
i = 0;
Jika nilai ini =0, maka kondisinya salah; semua nilai lain (bukan nol) menghasilkan true. Dengan konsep yang sama, ketika kita menggunakan bool dalam ekspresi aritmatika, nilainya selalu dikonversi menjadi 0 atau 1. Akibatnya, menggunakan bool dalam ekspresi aritmatika biasanya hampir pasti salah.
Perhatian:Jangan Campurkan Jenis Bertanda dan Tidak Bertanda
Ekspresi yang menggabungkan tanda dan tidak dapat menghasilkan hasil yang mengejutkan dan salah ketika nilai yang ditandatangani adalah negatif. Seperti yang dibahas di atas, nilai yang ditandatangani secara otomatis dikonversi menjadi tidak ditandatangani.
Misalnya, dalam ekspresi aritmatika seperti
x* y
Jika x adalah -1 dan y adalah 1, dan jika x dan y keduanya int, maka nilainya, seperti yang diharapkan, -1.
Jika x adalah int dan y tidak bertanda, maka nilai ekspresi ini bergantung pada berapa banyak bit yang dimiliki sebuah bilangan bulat pada mesin kompilasi. Di mesin kami, ekspresi ini menghasilkan 4294967295.
Mendaftarkan Variabel
Variabel register lebih cepat diakses dibandingkan dengan variabel memori. Jadi, variabel yang sering digunakan dalam program C++ dapat dimasukkan ke dalam register menggunakan register kata kunci. Kata kunci register memberitahu compiler untuk menyimpan variabel yang diberikan dalam register. Itu pilihan kompiler apakah akan memasukkannya ke dalam register atau tidak. Umumnya, compiler sendiri melakukan berbagai optimasi yang termasuk menempatkan beberapa variabel dalam register. Tidak ada batasan jumlah variabel register dalam program C++. Tetapi kompiler mungkin tidak menyimpan variabel dalam register. Ini karena memori register sangat terbatas dan paling umum digunakan oleh OS.
Untuk menentukan:
register int i;
Komentar
Komentar adalah bagian dari kode yang diabaikan oleh kompiler. Ini memungkinkan pemrogram untuk membuat catatan di area yang relevan dari kode sumber/program. Komentar datang baik dalam bentuk blok atau baris tunggal. Komentar program adalah pernyataan penjelasan. Itu dapat dimasukkan dalam kode C++ yang membantu siapa pun membaca kode sumbernya. Semua bahasa pemrograman memungkinkan beberapa bentuk komentar. C++ mendukung komentar satu baris dan multi-baris.
Komentar satu baris adalah yang dimulai dengan // dan berlanjut hingga akhir baris. Jika karakter terakhir di baris komentar adalah \ maka komentar akan dilanjutkan di baris berikutnya.
Komentar multi-baris adalah yang dimulai dengan /* dan diakhiri dengan */.
/* This is a comment */
/* C++ comments can also
* span multiple lines
*/
Urutan Escape
Beberapa karakter, seperti spasi mundur dan karakter kontrol, tidak memiliki gambar yang terlihat. Karakter seperti itu dikenal sebagai karakter yang tidak dapat dicetak. Karakter lain (tanda kutip tunggal dan ganda, tanda tanya, dan garis miring terbalik) memiliki arti khusus dalam banyak bahasa pemrograman.
Program kami tidak dapat menggunakan salah satu karakter ini secara langsung. Sebagai gantinya, kita dapat menggunakan urutan pelarian untuk mewakili karakter tersebut. Urutan pelarian dimulai dengan garis miring terbalik.
Bahasa pemrograman C++ mendefinisikan beberapa escape sequence:
Apa fungsinya?
Karakter
Baris baru
\n
Tab vertikal
\v
Garis miring terbalik
\\
Kereta kembali
\r
Tab horisontal
\t
Spasi mundur
\b
Tanda tanya
\?
Umpan formulir
\f
Peringatan (bel)
\a
Kutipan ganda
\"
Kutipan tunggal
\’
Kami menggunakan urutan pelarian seolah-olah itu adalah satu karakter:
cout << '\n'; // prints a newline
cout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline
Kita juga dapat menulis urutan escape umum \x diikuti oleh satu atau lebih digit heksadesimal. Atau kita menggunakan \ diikuti oleh satu, atau dua, atau tiga digit oktal. Urutan pelarian umum mewakili nilai numerik karakter. Beberapa contoh (dengan asumsi set karakter Latin-1):