+ 8
Depends on what language you are talking about.
In C/C++, the volatile keyword when used on an object/variable, tells the compiler to not do heavy optimizations involving said object/variable to avoid breaking the code.
In Java/C#, the volatile keyword tells the compiler that the variable/object must not have any cached copies which may become invalid due to unexpected changes.
In general, the volatile keyword specifics that a variable/object can be subjected to change which isn't specified as part of the program instructions.