What does y -= m < 3 mean?

后端 未结 8 2038
面向向阳花
面向向阳花 2021-01-30 20:03

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

相关标签:
8条回答
  • 2021-01-30 21:00

    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.

    0 讨论(0)
  • 2021-01-30 21:01

    < 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

    0 讨论(0)
提交回复
热议问题