Why do C#'s bitwise operators always return int regardless of the format of their inputs?
I disagree with always. This works and the result of a & b
is of type long
:
long a = 0xffffffffffff;
long b = 0xffffffffffff;
long x = a & b;
The return type is not int
if one or both of the arguments are long
, ulong
or uint
.
Why do C#'s bitwise operators return int if their inputs are bytes?
The result of byte & byte
is an int because there is no &
operator defined on byte. (Source)
An &
operator exists for int
and there is also an implicit cast from byte
to int
so when you write byte1 & byte2
this is effectively the same as writing ((int)byte1) & ((int)byte2)
and the result of this is an int
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…