Rabu, November 06, 2019

Perbedaan cara untuk mendeklarasikan variabel sebagai konstanta pada bahasa C dan C++

Terdapat banyak cara untuk membuat variabel sebagai konstanta
satu, Menggunakan keyword const: keyword const menentukan bahwa sebuah variabel atau object nilai adalah konstanta dan tidak dapat dimodifikasi nilainya pada saat waktu kompilasi.

Akan menghasilkan error seperti berikut:
error: assigmnet of read-only variable 'num'

dua, Menggunakan keyword enum: enumeration atau enum adalah tipe data yang didefinisikan user pada bahasa C dan C++. Umumnya digunakan untuk penamaan pada konstanta integral yang membuat program mudah untuk dibaca dan dirawat.

// In C and C++ internally the default
// type of 'var' is int
enum VARS { var = 42 };

// In C++ 11 (can have any integral type):
enum : type { var = 42; }

// where mytype = int, char, long etc.
// but it can't be float, double or
// user defined data type.

catatan: tipe data enum terbatas hanya pada contoh sebelumnya.

tiga, Menggunakan keyword constexpr: penggunaan constexpr hanya digunakan pada C++ dan tidak digunakan pada bahasa C, dimana penggunaannya untuk mendeklarasikan variabel sebagai sebuah konstanta. Tetapi akan gagal untuk dikompilasi jika inisialisasinya bukan sebuah ekspresi konstanta.

Program tersebut akan menghasilkan error.
error: the value of 'var' is not usable in a constant expression

Karena variabel 'var' bukanlah ekspresi konstanta. Karenanya untuk dapat membuatnya sebagai konstanta, maka variabel 'var' harus dideklarasikan dengan keyword const.

empat, Menggunakan macros: Penggunaan macros juga dapat dipakai untuk mendefinisikan konstanta, tetapi terdapat sedikit celah, dimana macros hanya berfungsi dalam penanganan pre-processor yang tidak dilakukan oleh compiler. Karenanya tidak direkomendasikan penggunaan macros untuk membawa pemeriksaan tipe informasi dan bahkan cenderung akan mengalami error.

C++

C
Kedua program tersebut akan menghasilkan output:
5 10

Catatan: preprocessor dan enum hanya bekerja sebagai konstanta literal dan konstanta integer dan hanya mendefinisikan nama simbol dari konstanta. Namun jika membutuhkan variabel konstanta dengan alamat memori spesifik maka dapat menggunakan 'const' atau 'constexpr' sesuai dengan yang dipersyaratkan.





Related Posts

Perbedaan cara untuk mendeklarasikan variabel sebagai konstanta pada bahasa C dan C++
Oleh

mohon untuk melakukan koreksi jika terdapat kesalahan pada penulisan blog ini,