int x = 3 > 4;
int y = 4.98;
printf("%d %d\n", x && y, x || y);
输出:
0 1
我的工作:
对于x变量:因为3> 4是假的...在C中表示它返回0,因为0表示C中的假,而真表示1 => x = 0
对于y变量:由于y是整数并且给出了小数,因此y立即下降到4 => Y = 4
0的二进制是0000
4的二进制是0100
所以
x && y = 0000 && 0100 = 0000
x || y = 0000 || 0100 = 0100 != 0001 (??)
为什么x || y = 1?
答案 0 :(得分:2)
我认为你混淆了逻辑和按位运算符。 &&
只是意味着'和',||
只是意味着或。因为y不是0,所以它被认为是真的,并且因为x是0,所以它是假的,所以x && y
是零,因为x是假的,x || y
是1,因为y是真。
也许您正在考虑的是按位运算符。按位并且仅为&
,按位或仅为|
答案 1 :(得分:1)
&安培;&安培;运算符将检查两个输入,如果两个输入都为真或1然后它将返回1否则它将返回false或0。 在哪里作为||运算符将检查是否有任何输入为真或1然后它将返回1否则它将返回false或0.例如
1 || 0 -> 1
1 && 0 -> 0
计算后的代码
x = 0
y = 4
0 && 4 -> 0
0 || 4 -> 1
答案 2 :(得分:0)
False评估为0,但与0不同的任何内容都为真(true != false
== true != 0
)
您正在使用逻辑运算符。如果您想要按位运算符,则&
(和),|
(或)和^
(xor)
答案 3 :(得分:0)
&&
和||
是逻辑运算符,而不是按位运算符。
0
被视为false,逻辑操作中任何其他值都被视为true。
x || y
,0 || 4
,隐含false || true
。
||
是逻辑OR
运算符。所以false || true
证明是真的。
此处有更多相关内容 - http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html#Logical-Operators。