https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92659

--- Comment #2 from Jonny Grant <jg at jguk dot org> ---
(In reply to Xi Ruoyao from comment #1)
> Is it appropriate?
> 
> Though on both 32-bit and 64-bit x86 "1ul" is good for a size_t, but I
> believe there is some platform where "1ull" is necessary.
> 
> Maybe I'm wrong.  But if I'm correct, suggesting "1ul" is encouraging bad
> code.  I'll use "(size_t) 1 << 32" for this.

UL means Unsigned Long, so if that type is also 64bit like size_t, then it is
fine.


I would rather use the real type, if the compiler is too stupid to start with a
type big enough...  the same code with 5147483647 works fine, because the
compiler starts with the number as a 'long int' which is already 64bit, no
suffix required.

#include <stddef.h>
int f()
{
    size_t i = 1;
    i = i << 32;
    return i;
}

Reply via email to