I read in a book that, whenever we declare a variable with the storage class as register, then it would be stored in a register, subject to the its availability. If no register is available, then the default storage type of 'auto' would be assigned to it.
Whenever we declare a variable without explicitly mentioning any storage class, then the default storage type assigned to it is 'auto' itself.
So, my question is, why not declare every variable to be of the 'register' storage class - if no register is available, it will anyways be treated as the default 'auto' class itself. And luckily, if registers are available, then it would be stored in one. I understand that we cannot use the & operator any longer, but what if I'm not going to work with pointers and addresses? Can I declare those variables with the 'register' storage class then? Because this seems to be a bad practise.
Edit: I searched the web, but 'unavailability of the address' is the only point mentioned. Why can't the rest variables be declared with 'register' is not mentioned.