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:
Code:
#include <iostream>
using namespace std;
void func(const int &x)
{
int &y = const_cast<int&>(x);
y = x + 5;
}
int main()
{
int i;
cin >> i;
cout<<"Before: "<<i<<'\t';
func(i);
cout<<"After: "<<i<<endl;
}