https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111689
gyumin <guminb at ajou dot ac.kr> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|INVALID |--- --- Comment #4 from gyumin <guminb at ajou dot ac.kr> --- I'm trying to understand how the type of a hex constant is determined in C. According to the C standard, when a hex constant has the LL suffix, it should first check if the value fits within the range of a long long int before checking if it fits within the range of an unsigned long long int. Given the constant 0x8F3700142F89C2A5LL, which corresponds to the value -8,127,026,915,869,867,355, it seems that this value should fit within the range of a signed long long int, which is from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. If that's the case, why do gcc, clang interpret it as an unsigned long long int? Could you clarify this behavior?