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

07-28 04:43