(But only on a technicality: because every program where that breaks is not technically C, and the compiler is allowed to assume this doesn't happen.)
I suspect the Lisps you talk about use arbitrary sized integers by default? Python also has that default. It's a good default. If you want to optimize for size and want an integer of limited size, like a 64 bits or so, you should explicitly specify.
Python's int is a bignum, but in Scheme you even have rationals built in. There's a notion of which numeric values are "exact" and which ones are "inexact" (i.e. floating point).
Python has rational numbers in the standard library. They are easy to use there, too.
Modern mostly-hidden, mostly-proprietary architectural execution models are hell for security and side channel prevention.
We need chips from 1984 with Ghz clocks if we want good security.
(I don't even know whether your processor does regular multiplication and division in O(1)?)
Most of them don't, especially division.