3 ms·
Why should it be cruel? Promotions are a part of life of an integer in C.
by folmar 6y ago
Why should it be cruel? Promotions are a part of life of an integer in C.
- MaulingMonkey 6y agoEven 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!