If you have a multi byte volatile variable (anything bigger than a byte), then any operation done on it will involve the code dealing with each of the bytes that it is made up of one by one. During that process it is possible for an interrupt to occur that changes the value of the variable being operated on, which is not a good thing
To prevent that you can temporarily turn off interrupts, copy the variable to another one then turn interrupts on again and subsequently operate on the copy whose value will not change