Make the default numeric type effectively unbounded, and allow those who need it to choose more compact types when needed. This is what many languages do, and it is possible to both generate efficient code when needed, and correct code is more likely to happen.
Let those people eat cake, and in the meantime protect me from my own misbehaviour.
When you're storing an integer, ideally "MAX_INT" is not something you have to worry about.
If you're doing compression you should use some sort of raw bytes type.