int x = 3 > 4;
int y = 4.98;
printf("%d %d\n", x && y, x || y);
输出:
0 1
我的工作:
对于x变量:由于3> 4为false ...在C中表示它返回0,因为0在C中为false且true表示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?
最佳答案
我认为您在混淆逻辑运算符和按位运算符。 &&
仅表示“和”,而||
仅表示或。由于y不为0,因此被认为是真实的,而由于x为0,则被认为是错误的,所以x && y
为零,因为x为假,而x || y
为1,因为y为真。
也许您在想的是按位运算符。按位和只是&
,按位或只是|
https://en.wikipedia.org/wiki/Bitwise_operations_in_C