3 ms·
Even programmers who are roughly aware of integral promotion rules may not have connected all the dots to realize the answer is implementation dependent. If si
by MaulingMonkey 6y ago
Even programmers who are roughly aware of integral promotion rules may not have connected all the dots to realize the answer is implementation dependent.
If sizeof(long) == sizeof(unsigned int), 1L * 2U results in an unsigned int, meaning the result is "false".
If sizeof(long) > sizeof(unsigned int), 1L * 2U result in a signed long, meaning the result is "true".
- mehrdadn 6y agoWow that is cruel! Somehow I just assumed int would get promoted to long regardless of their size difference. That this isn't the case almost seems like a language defect!