While looking through some example C code, I came across this:
y -= m < 3;
What does this do? It it some kind of condensed for loop or som
Most interesting is the amount of code it creates. On a simple Arduino system (compiler version 1.8.10) both the original and the
y -= (m < 3 ? 1 : 0);
create the same code size. However, the 'if' version:
if(m<3) {y -= 1;}
actually creates 8 bytes less code (4 instructions less). A good example of how creating clever code doesn't necessarily result in smaller code, especially with a good compiler.
<
has a higher priority to the sign of equal =
so m<3
returns 1 if m
is less than 3, and else is 0
then y = y - 1 or y = y - 0