为了账号安全,请及时绑定邮箱和手机立即绑定

要说的是,要做的事有什么区别呢?

要说的是,要做的事有什么区别呢?

白衣染霜花 2019-07-22 19:15:50
要说的是,要做的事有什么区别呢?我一直用||(两个管道)在OR表达式中,包括C#和PHP。偶尔我会看到一根管子被使用:|..这两种用法有什么区别?在使用一种或另一种时是否有任何注意事项?或者它们是可互换的?
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

就像&&&操作符,双操作符是“短路”操作符.

例如:

if(condition1 || condition2 || condition3)

如果条件1为真,则将不检查条件2和3。

if(condition1 | condition2 | condition3)

这将检查条件2和3,即使1已经为真。由于您的条件可能是相当昂贵的功能,您可以通过使用它们获得良好的性能提升。

有一个很大的警告,NullReference或类似的问题。例如:

if(class != null && class.someVar < 20)

如果类为空,则if-语句将在class != null都是假的。如果您只使用&,它将尝试检查class.someVar你得到一个很好的NullReferenceException..使用or-操作符可能不是什么陷阱,因为不太可能触发一些不好的东西,但是要记住这一点。

从来没有人用过单曲&|运算符,除非您有一个设计,其中每个条件都是必须执行的函数。听起来像设计的味道,但有时(很少)它是一种干净的方式来做事情。这个&运算符执行“运行这3个函数,如果其中一个函数返回false,则执行Else块”,而|“只有在没有人返回false的情况下才运行Else块”-可能很有用,但正如所说,这通常是一种设计味。

第二次使用|&接线员:按位操作.


查看完整回答
反对 回复 2019-07-22
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

\x是逻辑或运算符。听起来你基本上知道那是什么。它用于条件语句,如if、while等。


condition1 || condition2

如果条件1或条件2为真,则计算为true。


x是按位或运算符。它用来操作两个数字。您单独查看每个数字的每个位,如果其中一个位至少在其中一个数中为1,则产生的位也是1。以下是几个例子:


A = 01010101

B = 10101010

A | B = 11111111


A = 00000001

B = 00010000

A | B = 00010001


A = 10001011

B = 00101100


A | B = 10101111

希望这是有意义的。


因此,为了回答最后两个问题,除了“知道这两个操作符之间的区别”之外,我不会说任何警告。它们是不可互换的,因为它们做的是两件完全不同的事情。


查看完整回答
反对 回复 2019-07-22
?
萧十郎

TA贡献1815条经验 获得超13个赞

一种是“按位或”。

10011 b\x{e76f}01000b=>11011b

另一种是逻辑或。

真或假=>真


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 379 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信