Numeric Constants
Numeric constants are high-precision values. They don’t have a fixed type until they’re used — an untyped constant takes whatever type its context requires.
That’s why Big (a number too large for any integer type) works fine when passed to needFloat, but would overflow if passed to needInt.
Try it — add needInt(Big) to main and see what happens. (int maxes out at 64 bits, sometimes less.)