1. An object that has a name.
2. A declaration statement used to create a variable.
3. Reservation of memory in the RAM.
4. l-values have a persistent address in memory. r-values are not associated with a persistent memory address and are discarded at the end of the statement in which they occur.
5. An uninitialized variable is a variable that has been defined but has not been given a known value (through initialization or assignment). C++ does not initialize most variables to a given value therefore the default value of an uninitialized variable is whatever value happens to already be in the assigned memory location.
6. The result of executing code whose behavior is not well defined by the programming language.