<p>Why is <code>volatile</code> needed in C? What is it used for? What will it do?</p>

```
volatile
```
tells the compiler that your variable may be changed by other means, than the code that is accessing it. e.g., it may be a I/O-mapped memory location. If this is not specified in such cases, some variable accesses can be optimised, e.g., its contents can be held in a register, and the memory location not read back in again.