0

所以如果我有x = 0x01并且y = 0xff我有x & y,我会得到0x01。如果我这样x && y做了,我仍然会得到0x01,但计算机只是说它是真的,如果它有什么比0x00?我的问题是,无论按位还是逻辑与/或,运算后的位是否相同,但计算机只是以不同的方式解释最终结果?换句话说,& 和 &&(同样是 | 和 ||)运算结果的十六进制值是否相同?

编辑:在这里谈论C

4

2 回答 2

1

答案取决于使用的精确语言。

在一些弱类型语言(例如 Perl、JavaScript)中,如果两者都是“真实的”,或者其他情况,a && b将评估为实际值。baba

在 C 和 C++ 中,&&运算符将只返回 0 或 1,即int等价于true或 false。

int在 Java 和 C# 中,提供to甚至是不合法的&&——操作数必须已经是布尔值。

对于anda && b == a & b的所有合法值,我不知道任何语言在我的脑海中。ab

于 2015-02-02T16:19:51.023 回答
0

在 C# 中,运算符的行为有所不同: && 只允许用于布尔类型,而 & 也允许用于任何整数类型。

如果 a 和 b 都为真,则 a && b 返回真。a & b 返回按位与运算的结果。

于 2015-02-02T16:53:24.637 回答