Answer B)
Automatic storage class- scope local to block. Outside the the value will never exists
Register storage class - The register storage class is used to define local variables that should be stored in a register instead of RAM
Static storage class- These have memory allocated during program run and that survives till program ends. The scope of the variable -- where we can access it - is the block in which it is declared or if it is declared in global space - is restricted to that compilation unit (this differentiates it from global variables which can be used even in other compilation units). For example, in an OOP environment, consider a banking system. Now I can make the amount of money in the bank as a static variable as this is modified by any of the ACCOUNT objects but overall we have a single balance amount for the bank.
External storage class- The extern storage class is used to give a reference of a global variable that is defined in some other compilation unit.