所以如果我有x = 0x01
和y = 0xff
而我x & y
,我会得到0x01
。如果我x && y
,我仍然会0x01
,但计算机只是说它是真的,如果它不是0x00
?我的问题是操作后的位是否相同,无论是按位还是逻辑AND / OR,但计算机只是以不同的方式解释最终结果?换句话说,&结果的十六进制值。和&& (同样|和||)操作相同吗?
编辑:在这里谈论C
答案 0 :(得分:1)
答案取决于使用的确切语言。
在某些弱类型语言(例如Perl,JavaScript)中,如果a && b
和b
都是" a
将评估b
的实际值。除此之外"或a
。
在C和C ++中,&&
运算符只返回0或1,即int
等效于true
或false。
在Java和C#中,向int
提供&&
甚至不合法 - 操作数必须已经是布尔值。
对于a && b == a & b
和a
的所有合法值b
,我不知道任何语言。
答案 1 :(得分:0)
在C#中,运算符的行为有所不同: &安培;&安培;仅允许布尔类型和&对于任何整数类型。
a&&如果a和b都为真,则b返回true。 a& b返回按位AND运算的结果。