什么是| 和^运算符用于?
可能重复:
什么是按位运算符?
最近我遇到了一些使用了|的样本 和^运算符。 我猜这些是or
negation
运算符。
那么这些运营商究竟代表什么呢?
如果将它应用于整数类型,则它们是按位或xor运算符。 但是,如果将它们应用于布尔类型,则它们是逻辑或xor。 看一下或运算符和xor运算符的解释
您可以从维基百科真值表中获取有关布尔运算的更多详细信息
-
|
=(按位/非短路)“或” -
^
=“xor”
而对于信息,“不”(按位否定)是~
MSDN上有关于所有C#运算符的文档:
http://msdn.microsoft.com/en-us/library/6a71f45d.aspx
编辑 – Jon B评论说,链接文档中的相关引用会很有用。
|
是逻辑OR运算符 。
二进制| 运算符是为整数类型和bool预定义的。 对于整数类型,| 计算其操作数的按位OR。 对于bool操作数,| 计算其操作数的逻辑OR; 也就是说,当且仅当两个操作数均为假时,结果为false。
^
是逻辑XOR运算符 。
二元^运算符是为整数类型和bool预定义的。 对于整数类型,^计算其操作数的按位异或。 对于bool操作数,^计算其操作数的逻辑异或; 也就是说,当且仅当其中一个操作数为真时,结果才为真。
它们是逻辑按位运算符
| 是一个或链接
^是异或链接
有积分类型,| 是一个按位或,^一个按位xor和完整性&是一个按位和。
使用布尔类型,| 是一个布尔值,或者是一个布尔值xor和一个布尔值&。
相比之下,|| 是短路布尔值 – 如果第一个操作数的计算结果为true,则不计算第二个操作数。 &&是一个短路布尔值 – 如果第一个操作数为假,则不计算第二个操作数。 没有短路^因为不存在不需要评估第二个的情况。
|| 和&&比…经常使用 和/在布尔情况下,因为通常至少有一个微小的效率增益而且永远不会丢失。 但是,如果右手操作数有副作用,在所有情况下触发都很重要,那么| 或者&将是使用者。 在实践中,这是罕见的,并且有难闻的气味(如果副作用很重要,则应该在单独的表达式中进行评估以使目的更清楚)。
编辑:潜在混淆的一个原因是,在其他一些语言中,整数类型可以用作布尔值(例如,你可以做if(53)
并且它与if(true)
相同)这使得上述运算符之间的区别大不相同:如果使用“纯粹的”布尔类型(它只有true和false作为其可能的值),它们是相同的,但不是这样。 C#故意不允许对整数类型进行精确的布尔运算,以防止这些语言中存在错误的可能性。
^
逻辑异或
|
逻辑或
更新
在c#中它的逻辑运算:
Console.WriteLine(true ^ false); // logical exclusive-or Console.WriteLine(false ^ false); // logical exclusive-or