I was running through the integer variable types yesterday and despite re-reading the details I cannot understand the need for both int and long int. What I mean is, if int provides the same range of values as long int, then why have both at least for my version? I understand that on some machines the size of int does differ.
Type Number (bytes) Range of Values
signed char 1 128 to +127
short int 2 32,768 to +32,767
int 4 2,147,438,648 to +2,147,438,647
long int 4 2,147,438,648 to +2,147,438,647
long long int 8 9,223,372,036,854,775,808 to +9,223,372,036,854,775,80
Similarly, for unsigned....
unsigned int 4 0 to 4,294,967,295
unsigned long 4 0 to 4,294,967,295