Understanding Constants in C: A Beginner’s Guide


“Constants in C” are crucial for building robust code. They ensure your values don’t change during execution, leading to fewer bugs. Struggling with magic numbers or unexpected changes? Understanding constants helps resolve these issues. Keen to up your coding game? Read on to explore simple yet powerful coding techniques!

Define keyword constant and variable in c

Constant in C

A constant is a fixed value in C that cannot be changed during program execution. Once defined, its value remains the same throughout the program. Constants improve readability and maintainability because they prevent accidental modification.

Example:

const int MAX = 100;   // MAX is a constant, its value cannot be changed

Variable in C

A variable is a named memory location in C that is used to store data, and its value can change during program execution. Variables must be declared with a data type before use.

Example:

int age = 25;   // age is a variable, its value can be modified
age = 30;       // value of age changes

Key Difference:

Variable → Value can be modified any number of times during execution.


In C, constants are defined using the `const` keyword followed by the data type and the constant name. For example:
c
const int MAX_VALUE = 100;

This line defines `MAX_VALUE` as a constant integer with a value of 100, which can't be changed.  

Understanding C Constants

c
#include 

#define PI 3.14159 // Define constant using #define

int main() {
    const int DAYS_IN_WEEK = 7; // Constant using 'const' keyword

    // Display the constants
    printf("Value of PI: %f
", PI);
    printf("Days in a week: %d
", DAYS_IN_WEEK);

    return 0;
}
  

Explanation of the Code


The provided C code demonstrates the use of constants in programming. Here’s a basic explanation to help you understand it better:


  1. The program begins by including the standard input-output header file using #include <stdio.h>. This line is essential for using the printf() function which helps in displaying output on the screen.

  2. A constant named PI is defined using the #define preprocessor directive. This makes PI represent the value 3.14159 throughout the program. No semicolon is needed here.

  3. Inside the main() function, another constant DAYS_IN_WEEK is defined using the const keyword, assigning it a value of 7. Values assigned to constants by const cannot be changed.

  4. The printf() function is used to display these constants with messages, formatting the outputs as floating-point and integer types respectively.

  5. Finally, the program ends with the return 0; statement, indicating that the execution was successful.

Output

Value of PI: 3.141590
Days in a week: 7

Practical Uses of Constants in C

1. NASA – Safety-Critical Systems (Fuel Thresholds, Limits)

Use Case:
NASA uses constants in flight control systems to store fixed safety thresholds (like max temperature, fuel level, or pressure). These values should never change during execution.

Benefit:

  • Prevents accidental overwriting of critical limits.
  • Makes the code more reliable and readable.

Code Snippet:

#include <stdio.h>

const float MAX_FUEL_LEVEL = 100.0;   // Safety threshold constant

int main() {
    float fuel = 95.5;

    if (fuel > MAX_FUEL_LEVEL) {
        printf("Warning: Fuel level exceeded safety limit!\n");
    } else {
        printf("Fuel level is safe.\n");
    }

    return 0;
}

Output:

Fuel level is safe.

2. Microsoft – Software Licensing (Fixed License Keys, Limits)

Use Case:
Microsoft products often use constants for license expiry dates or max user limits.

Benefit:

  • Hardcoding constants avoids accidental runtime changes.
  • Enhances software security.

Code Snippet:

#include <stdio.h>

const int MAX_USERS = 5;   // License constant

int main() {
    int active_users = 3;

    if (active_users > MAX_USERS) {
        printf("License exceeded. Upgrade required.\n");
    } else {
        printf("Within license limit.\n");
    }

    return 0;
}

Output:

Within license limit.

3. Gaming Industry (EA / Ubisoft – Game Physics Constants)

Use Case:
Games use constants for gravity, friction, or character speed limits.

Benefit:

  • Keeps physics consistent.
  • Easier for developers to tweak gameplay by adjusting constants.

Code Snippet:

#include <stdio.h>

const float GRAVITY = 9.81;  // Gravity constant used in all physics calculations

int main() {
    float mass = 70.0; // in kg
    float weight = mass * GRAVITY;

    printf("Player weight = %.2f N\n", weight);

    return 0;
}

Output:

Player weight = 686.70 N

4. Google – Networking (Buffer Sizes & Port Numbers)

Use Case:
Google uses constants to define network port numbers, buffer sizes, and API limits in backend systems.

Benefit:

  • Improves maintainability (one place to change values).
  • Reduces bugs from inconsistent values across files.

Code Snippet:

#include <stdio.h>

const int BUFFER_SIZE = 1024;   // Fixed buffer size

int main() {
    char buffer[BUFFER_SIZE];

    printf("Buffer of %d bytes created for network data.\n", BUFFER_SIZE);

    return 0;
}

Output:

Buffer of 1024 bytes created for network data.

Additional Insight : Constants in C

1. Where do constants reside in memory, and how does that affect program behavior or security?

In C, constants declared with const are usually stored in the read-only section of memory (RODATA).

  • This prevents modification at runtime.
  • It also improves security, since trying to overwrite them often leads to a segmentation fault.
  • Compilers can optimize code by treating constants as fixed values, making execution faster.

2. Why doesn’t const always work as a compile-time constant in C?

Unlike C++, in C language, a const variable is not automatically a compile-time constant.
Example:

const int SIZE = 10;
int arr[SIZE];  // ❌ Error in C, valid in C++

Instead, use #define or enum for compile-time constants:

#define SIZE 10
int arr[SIZE];   // ✅ Works in C

3. What are the differences between const, #define, and enum in C?

Featureconst#defineenum
Type Safety✅ Yes❌ No✅ Yes (int only)
ScopeFollows C scope rulesGlobal by defaultLimited to enum block
StorageMay use memoryNo memory (text replacement)Stored as int
DebuggingEasier to debugHarder (no type info)Easier
Use CaseSafe, typed constantsCompile-time valuesNamed integer constants

👉 Rule of thumb: Use const for typed values, #define for macros, and enum for sets of integers.

4. Why use const instead of just “not changing” a variable?

Because:

  • const enforces immutability by the compiler.
  • Prevents accidental overwrites by you or other developers.
  • Signals intent clearly in code.

Example:

int maxUsers = 5;    // Could be changed accidentally
const int MAX_USERS = 5; // Compiler prevents modification

5. How does compile-time evaluation work for constants?

If you use #define or enum, the value is replaced at compile-time, meaning no memory is allocated.
If you use const, the compiler may allocate memory (depends on optimization).

Example:

#define PI 3.14   // Replaced directly in code (no memory)
const float pi = 3.14; // May occupy memory, but safer

6. When might using #define cause unexpected behavior?

Since #define is a preprocessor directive (text replacement), it doesn’t follow type rules.

Example:

#define SQUARE(x) x*x
printf("%d", SQUARE(5+1));  
// Expands to 5+1*5+1 = 11 ❌ Wrong

✅ Fix with const or inline function:

inline int square(int x) { return x*x; }

Exciting news for all coders! Our AI-powered C online compiler lets you write, run, and test your code instantly. With artificial intelligence support, coding becomes faster and more efficient, making it perfect for beginners and experts alike. Try it now and watch your skills skyrocket!

Conclusion

Learning ‘Constants in C’ empowers you with precision and efficiency in coding. It’s a journey that enhances your programming foundation. Why not give it a try? You’ll surely feel a sense of accomplishment. For more on programming languages like Java, Python, C, C++, visit Newtum.

Edited and Compiled by

This article was compiled and edited by @rasikadeshpande, who has over 4 years of experience in writing. She’s passionate about helping beginners understand technical topics in a more interactive way.

About The Author