byte op1 = 20;
sbyte op2 = 30;
var result = op1 & op2;
Run Code Online (Sandbox Code Playgroud)
我知道&运营商返回bool,但我现在已经收费了.
为什么等于结果20?为什么结果是Int32?
Jon*_*eet 13
我知道&运营商返回bool
当操作数也是bool时,这才是真的.的&操作者是逻辑的或者按位,这取决于它的操作数.从文档:
二进制和运算符是为整数类型和bool预定义的.对于整数类型,&计算其操作数的逻辑按位AND.对于bool操作数,&计算其操作数的逻辑AND; 也就是说,当且仅当它的两个操作数都为真时,结果才为真.
也许您正在考虑&&运算符,它只是一个逻辑运算符(在任何预定义类型上),并且还执行短路.
至于为什么结果int而非byte,sbyte,short或ushortC#不为类型小于32位定义算术/位运算符.这在另一个Stack Overflow问题中进行了讨论,但并不是特定的&.