Konstanta (pemrograman)
Perbandingan dengan literal dan macro

Ada beberapa cara utama beberapa mengekspresikan nilai data yang tidak berubah selama pelaksanaan program yang konsisten di berbagai bahasa pemrograman. Salah satu cara yang sangat dasar dengan hanya menulis literal angka, karakter, atau string ke dalam kode program, yang langsung di C, C + +, dan bahasa yang sama.
Dalam bahasa assembly, angka literal dan karakter yang dilakukan dengan menggunakan "modus langsung" petunjuk yang tersedia pada mikroprosesor kebanyakan. Nama "langsung" berasal dari nilai-nilai yang segera tersedia dari instruction stream, Sebagai lawan memuat mereka secara tidak langsung dengan melihat alamat memori  Di sisi lain, nilai-nilai lama dari panjang kata mikroprosesor, seperti string dan array, ditangani langsung dan perakit umumnya memberikan "data" pseudo-op untuk menanamkan data tersebut tabel dalam sebuah program.
Cara lain adalah dengan mendefinisikan simbolik macro. Banyak bahasa pemrograman tingkat tinggi, dan perakit (assemblers), menawarkan fasilitas makro di mana programmer dapat menentukan, umumnya pada awal sebuah file sumber atau dalam file definisi yang terpisah, nama untuk nilai yang berbeda. Sebuah preprocessor kemudian mengganti nama-nama dengan nilai-nilai yang sesuai sebelum kompilasi, sehingga sesuatu yang fungsional identik dengan menggunakan literal, dengan keunggulan kecepatan modus langsung. Karena bisa sulit untuk mempertahankan kode di mana semua nilai ditulis harfiah, jika nilai yang digunakan dengan cara apapun berulang atau tidak-jelas, hal ini sering dilakukan sebagai makro.
Cara ketiga adalah dengan menyatakan dan mendefinisikan variabel constant. Sebuah variabel global atau statis dapat dinyatakan (atau simbol didefinisikan dalam assembly) dengan kualifikasi kata kunci seperti Templat:Cpp, constant, or final
 yang berarti bahwa Nilai akan ditetapkan pada waktu kompilasi dan tidak boleh berubah pada saat runtime. Compiler biasanya menempatkan constant statis di bagian teks dari file objek bersama dengan kode itu sendiri, yang bertentangan dengan bagian data di mana non-const data diinisialisasi disimpan, meskipun beberapa memiliki pilihan untuk menghasilkan bagian khusus didedikasikan untuk constant, jika demikian diinginkan. Perlindungan memori dapat diterapkan ke daerah ini untuk mencegah variabel constant yang saling menimpa dengan petunjuk menyimpang.
Ini "variabel constant" berbeda dari literal dalam beberapa cara. Compiler biasanya menempatkan constant di lokasi memori tunggal yang diidentifikasi oleh simbol, daripada tersebar di seluruh executable seperti dengan makro. Sementara ini menghalangi keuntungan kecepatan dari modus langsung, ada keuntungan dalam efisiensi memori, dan pengawakutu dapat bekerja dengan constant saat runtime. Juga ketika macro dapat didefinisikan ulang sengaja oleh file header bertentangan dalam C dan C + +, constant yang bertentangan terdeteksi pada waktu kompilasi.
Tergantung pada bahasa, constant dapat menjadi untyped atau typed. Dalam C dan C + +, macro menyediakan bekas/sisa, sedangkan Templat:CPP menyediakan yang terakhir:
#define PI 3.1415926535

const float pi2 = 3.1415926535;
while in Ada, there are universal numeric types that can be used, if desired:
pi: constant:= 3.1415926535;

pi2: constant float:= 3.1415926535;
dengan varian untyped yang implisit dikonversi ke jenis yang sesuai pada setiap penggunaan