Reversing Operands’ Order in an Equality Expression

Reversing Operands’ Order in an Equality Expression

An equality expression takes two operands, the second of which is often a constant or an rvalue:

   if (x==4)  // 4 is an rvalue  // .. do something  if (y!=MAX_COUNT) // MAX_COUNT is a constant  // .. do something

Some programmers prefer to reverse the operands’ order:

   if (4==X)  // .. do something  if (MAX_COUNT!=y)    // .. do something

Because the equality and inequality operators are commutative, reversing the order of their operands doesn’t change the result. However, the benefit is that a reversed order saves you from using = instead of == by mistake. If you put = instead of == in a reversed order expression, for example:

 if (4=X)  // mistakenly used = instead of ==  // .. do something

Your compiler will catch the error and complain about an attempt to assign to an rvalue.

Personally, I don’t like the reverse order trick because it makes the code somewhat distorted: the programmer’s intention is to check the value of x, not the value of the constant 4. Still, if you find yourself mistaking = for ==, you may adopt this coding style. Note that a good compiler should warn about assignments inside conditions, which makes this techniques less needed than it might seem at first.


Share the Post: