https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92659
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- Because 5147483647 doesn't fit in an int, so it picks a larger type, because that's what the standard requires. 1 does fit in an int, so the compiler picks int, because that's what the standard requires.