...
The volatile keyword eliminates this confusion by imposing restrictions on access and caching. According to the C99 Rationale [ISO/IEC C99 Rationale : 2003],
No caching through this lvalue: each operation in the abstract semantics must be performed (that is, no caching assumptions may be made, because the location is not guaranteed to contain any previous value). In the absence of this qualifier, the contents of the designated location may be assumed to be unchanged except for possible aliasing.
...
Bibliography
| [ISO/IEC C99 Rationale : 2003] | Section 6.7.3, "Type Qualifiers" |
| [Sun 2005] | Chapter 6, "Transitioning to ISO C" |
...