Pointers/Memory Allocation   «Prev  Next»
 Lesson 2 The const keyword Objective Examine the use of the keyword const.

## C++ const Keyword

As we saw in a previous module, the keyword `const` is a type specifier. When used alone in a declaration, the base type is implicitly `int`. A variable declared as `const` cannot have its value changed. A `const` variable can be used in places that otherwise would require a literal, such as an array size.

### const and lvalue

When an ordinary variable is used on the left side of an assignment, it is used as an lvalue. An lvalue is an expression that can be used as an address to be stored into. A `const` variable cannot be used on the left side of an assignment. It is a nonmodifiable lvalue. This implies that a `const` variable must be initialized where defined.

## Specifying Integer Constants

Because you can have different types of integer variables, you might expect to have different kinds of integer constants. If you just write the integer value 100, for example, this will be of type int. If you want to make sure it is of type long, you must append an uppercase or lowercase letter L to the numeric value. So 100 as a long value is written as
```100L.
```
Although it is perfectly legal to use it, a lowercase letter l is best avoided because it is easily confused with the digit 1. To declare and initialize the variable Big_Number, you could write this:
```long Big_Number = 1287600L;
```

You write negative integer constants with a minus sign, for example:
```int decrease = -4;
long below_sea_level = -100000L;
```
You specify integer constants to be of type long long by appending two Ls:
```long long really_big_number = 123456789LL;
```

To specify a constant to be of an unsigned type, you append a U, as in these examples:
```unsigned int count = 100U;
unsigned long value = 999999999UL;
```
To store integers with the largest magnitude, you could define a variable like this:
```unsigned long long metersPerLightYear = 9460730472580800ULL;
```
The ULL specifies that the initial value is type unsigned long long.