Actually depending on the exact situation a const can be variable.
unsigned is a modifier that means that the value is positive only (no negative sign). This helps extend the upper limit for integer values.
long is a modifier that basically says to use another set of min ranges for integer values. Depending on the compiler this can have no affect.
const is a modifier that means you can't change the value of the variable. Now this isn't 100% because you can cast away the const and change the value under certain conditions.
Now the reason I said a const variable is because of this:
using namespace std;
void func(const int &x)
int &y = const_cast<int&>(x);
y = x + 5;
cin >> i;