为什么&运算符返回Int32而不是bool?

Bur*_*Out 2 c#

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,shortushortC#不为类型小于32位定义算术/位运算符.这在另一个Stack Overflow问题中进行了讨论,但并不是特定的&.