There are four storage classes in C programming that determine how long a variable exists: 1) automatic variables exist within the function they are declared in and do not retain their value between calls, 2) external variables can be accessed from any function but must be declared in only one file, 3) static variables retain their value between function calls, and 4) register variables attempt to be stored in processor registers for faster access but may be stored in memory instead if registers are full.