The register keyword of C (and C++) recommends to the compiler that a simple variable be stored in a machine register, if possible. As such, it has an immediate syntactic effect: it is illegal to take the address of a register variable using the & operator. This is the only effect required of a C compiler!

Generally, the compiler (and especially the optimiser) know better than you which variables should be placed in a register. The optimizer is your friend. Most authorities therefore advise against declaring your variables register. However, when performing micro-optimisations for a specific compiler on a specific platform, it might be a good idea to try this keyword (especially if the generated assembly language is not to your liking). As always, you must perform careful testing to see if adding the keyword makes matters better or worse.