传统上,大多数编程语言的AND优先级高于OR优先级,因此表达式"a OR b AND c“被视为"a OR (b AND c)”。遵循这个想法,搜索引擎和查询/寻址语言(css,xpath,sql,...)使用了相同的优先顺序。是不是搞错了?
当处理足够大的数据时,这种优先级排序是不方便的,因为它使得在不使用括号的情况下无法创建可重用的查询上下文。使用AND创建上下文更加方便,然后使用OR在上下文中合并结果。如果使用空格作为AND运算符,使用逗号作为OR运算符,则会更加方便。
例如:在互联网上搜索11月或12月去巴哈马的机票时,键入“机票巴哈马11月,12月”而不是“机票巴哈马11月”、“机票巴哈马12月”或“机票巴哈马(11月,12月)”会更方便。
在CSS中,如果我们需要设置两个元素的样式为红色,我们必须这样做: body.app1 div.d1 td.phone span.area,body.app1 div.d1 td.fax span.area{color: red }本质上复制了前缀body.app1 div.d1和后缀span.area
如果OR的优先级高于,我们将在CSS中写入: body.app1 div.d1 td.phone,td.fax span.area{color:red}
当然,这个想法可以发展成有两个运算符或者一个比AND优先级高的运算符和一个优先级较低的运算符,例如,',‘更高,';’更低,但在许多情况下,语言没有多余的符号来扩展这种方式,并且现有的优先级",“在使用它的地方是低的。
发布于 2009-10-24 02:25:18
考虑到OR和and的背景来自于具有明确定义的优先级的数理逻辑,您在设计中不能在不使绝大多数用户感到困惑的情况下违反该优先级。
发布于 2009-10-24 02:15:29
我宁愿在任何地方都保持一致性,无论是代码、SQL还是搜索查询,这样我就不必记住在这种特殊情况下它会走哪条路。
发布于 2009-10-24 02:33:37
我认为您忽略了操作员优先级的要点。它们的存在只是为了方便程序员/书籍作者。操作顺序的使用使得某些子句可以在没有括号的情况下编写,但是使用括号可以确保读者确切地知道代码在做什么,特别是当不同的语言具有不同的操作顺序时。
https://stackoverflow.com/questions/1615071
复制相似问题