Constant (computer programming)

In computer programming, a constant is a value that cannot be altered by the program during normal execution, i.e., the value is constant.[a] When associated with an identifier, a constant is said to be "named," although the terms "constant" and "named constant" are often used interchangeably. This is contrasted with a variable, which is an identifier with a value that can be changed during normal execution, i.e., the value is variable. Constants are useful for both programmers and compilers: For programmers they are a form of self-documenting code and allow reasoning about correctness, while for compilers they allow compile-time andrun-time checks that verify that constancy assumptions are not violated, and allow or simplify some compiler optimizations.

There are various specific realizations of the general notion of a constant, with subtle distinctions that are often overlooked. The most significant are: compile-time (statically-valued) constants, run-time (dynamically-valued) constants, immutable objects, and constant types (const).

Typical examples of compile-time constants include mathematical constants, values from standards (here maximum transmission unit), or internal configuration values (here characters per line), such as these C examples:

const float PI = 3.1415927;  // maximal single float precisionconst unsigned int MTU = 1500;  // Ethernet v2, RFC 894const unsigned int COLUMNS = 80;

Typical examples of run-time constants are values calculated based on inputs to a function, such as this C++ example:

void f(std::string s) {  const size_t l = s.length();  // ...}


Some programming languages make an explicit syntactic distinction between constant and variable symbols, for example considering assignment to a constant to be a syntax error, while in other languages they are considered syntactically the same (both simply an identifier), and the difference in treatment is semantic (assignment to an identifier is syntactically valid, but if the identifier is a constant it is semantically invalid).

Although a constant's value is defined only once, a constant may be referenced many times in a program. Using a constant instead of specifying a value multiple times in the program does not only simplify code maintenance (as in don't repeat yourself), but it can also supply a meaningful name for it and can consolidate such constant bindings to a standard code location (for example, at the beginning or in a separate file).