I have some ancient memories of writing C code like:
long value = 0;
in the bad old Win16 days and ending up with value
being only half-initialized: i.e. the lower 16 bits were 0
and the upper 16 bits were whatever random bits were at that location in memory. As such, I became conditioned to write:
long value = 0L;
Is this still required in this day-and-age under C99 and/or C++? I know that ILP32 specifies that int
and long
are both 32-bit, but suppose we're using, say, LP64 where int
s are 32-bits and long
s are 64-bits. Are the suffixes required or will the modern forms of C and C++ implicitly extend literals to the length of the variable they're being assigned to?
How about unsigned values? I.e. is this required?
unsigned long value = 0UL;