But... your advice as written is just insane. They are real, and required routinely. You can't just apply this as a "for dummies" rule without essentially ruling out half of the code they'll need to write.
A negative number yes, but not really a memory offset (you shouldn't mix negative numbers and memory offset, really)
But yeah, if you're doing "math" go for it, but it's on rare occasions where you need negative numbers (subtraction yes)
The most common case I remember may be sound samples, where you have signed chars.
For all other cases you would be using floating point or decimal numbers
If I'm trying to avoid mathematical anomalies, floating point is not what I would run to... "Equal" is a matter of degree, you have to be careful with anything near zero and you can't carelessly mix together numbers that are a few orders of magnitude different than each other.
But for most of "math" you would go for floating point. You won't reinvent some fixed point math using integers just because...
Can you explain why you would advocate this? Am I misunderstanding you, or missing something?
I replied to the other comment in this thread with an openbsd vulnerability caused by doing what is being advocated (I did choose openbsd to be funny).