【发布时间】:2023-03-27 18:50:01
【问题描述】:
我已经看到嵌入式编程以相反的顺序使用条件,例如在条件检查中左侧而不是右侧的文字。
( var > 0) and ( 0 < var)
这是有原因的吗?还是只是一种编码风格?
谢谢
编辑:感谢大家回答并消除我的疑问。
【问题讨论】:
-
其实并没有改变语义(如果
<和>是对称实现的)。我(几十年前)读过有关“防御性”编程的文章,它有助于更轻松地发现拼写错误和编程错误。从这个意义上说,后者更具防御性。 (不幸的是,我忘记了真正的原因。) -
编码风格(在理智的世界中,operator 可以以不同的方式实现)。但从理解的角度来看,第一个更可取。
-
=与==相比更有意义。想象一下,你在一个条件下混淆了:var = 0而不是var == 0在语法上是正确的。0 = var而不是0 == var会导致编译器错误。 (=左侧的非左值) -
看看各自的底层汇编/机器代码是什么会很有趣;也许它会是一样的。
-
那被用作“防御性编程”。事实上,你可以比较好(var == 0)或做错(var = 0)。在第二种情况下,您为 var 赋值为零,这很难调试。如果替换为 (0 = var),则会产生编译错误,并且更易于调试。
标签: c++ coding-style