Runtime and Compile-time constants in C++
Run-time Constant:
These are the constants whose respective values can only be known or computed at the time of running of source code. Run time Constants are a bit slower than compile-time constants but are more flexible than compile-time constants. However, once it is initialized, the value of these constants can’t be changed.
Below is the program for illustration of Runtime constants:
C++
// C++ program to illustrate // Run-time Constants #include <iostream> using namespace std; // Driver Code int main() { // Input a variable double electonmass; cin >> electonmass; // Define a constant // and initialize it at // run-time const double electon_mass{ electonmass }; // Known to the compiler // at the run-time cout << electon_mass << endl; return 0; } |
2.07335e-317
Compile-time Constant:
These are the constants whose respective value is known or computed at the time of compilation of source code. Compile-time constants are faster than run-time constants but are less flexible than run-time constants.
Below is the program for illustration of Compile-time Constant:
C++
// C++ program to illustrate // compile-time constants #include <iostream> using namespace std; // Driver Code int main() { // Declare and initialize // compile time constant const double electron_q{ 1.6e-19 }; // Value known to compiler // at compile-time cout << electron_q << endl; return 0; } |
1.6e-19
Difference between Run-time and Compile-time constants
Compile-time constants | Run-time constants | |
---|---|---|
1. | A compile-time constant is a value that is computed at the compilation-time. | Whereas, A runtime constant is a value that is computed only at the time when the program is running. |
2. | A compile-time constant will have the same value each time when the source code is run. |
A runtime constant can have a different value each time the source code is run. |
3 |
It is generally used while declaring an array size. |
It is not preferred for declaring an array size. |
4 | If you use const int size = 5 for defining a case expression it would run smoothly and won’t produce any compile-time error. | Here, if you use run-time constant in your source code for defining case expression then it will yield a compile-time error. |
5 | It does not produces any compile time error when used for initializing an enumerator. |
Same compilation error, if runtime constant is used for initializing an enumerator. |
Please Login to comment...