我见过嵌入式编程以相反的顺序使用条件,例如在条件检查中将文字放在左侧而不是右侧。
( var > 0) and ( 0 < var)
这有什么原因吗?或者它只是一种编码风格?
谢谢
编辑:感谢大家回答并消除我的疑问。
最佳答案
它们是等价的。唯一的区别可能是 operator<
/>
是重载的,并且这些重载具有不同的含义(但不鼓励)。
我见过人们为相等运算符这样做,以避免错误地使用赋值。所以代替这个:
if (a==0) ...
错误地这样写:
if (a=0) ... // compiles, and not what we wanted, a assigned to zero, and "if" never taken
如果我们使用反向比较:
if (0==a) ...
然后错误的版本无法编译:
if (0=a) ... // doesn't compile
但这在今天并不是太重要,因为大多数编译器都会 warn你的if (a=0)
.
正如 Max Langhof 所指出的,这种相反的条件称为 Yoda conditions由于顺序与正常的英语顺序不同。
关于c++ - ( var > x) 和 ( x < var) 之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475199/