操作的合理性顺序 - 逻辑NOT

时间:2017-03-21 08:15:38

标签: operator-precedence solidity

我对Solidity的操作顺序有疑问。在文档中,它表示逻辑NOT操作优先于逻辑AND操作。问题是,当我有一个类似if(false && !function())的{​​{1}}语句时,由于操作的顺序,我认为首先调用该函数,但实际上&&运算符的短路先完成。所以我的问题是:为什么?

1 个答案:

答案 0 :(得分:0)

这是因为两个运营商(str, bytes, int,)||应用了常见的短路规则,如Solidity document中所述:

  

运营商||和&&应用常见的短路规则。这个   表示在表达式f(x)||中g(y),如果f(x)的计算结果为真,   g(y)即使可能有副作用也不会被评估。

由于常见的短路规则,此处描述的行为与许多其他语言完全相同,例如Java或Scala。这是一个Scala REPL演示:

&&