这个printf()语句的输出如何计算?

英伟达
  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?

Dietbacon

我认为您在混淆逻辑运算符和按位运算符。&&只是表示“和”,而||只是表示“或”。因为y不为0,所以它被认为是真实的,并且由于x为0,所以它是假的,所以x && y也为零,因为x是假的,而x || y为1是因为y为真。

也许您在想的是按位运算符。按位和是just &,以及按位或is|

https://zh.wikipedia.org/wiki/Bitwise_operations_in_C

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章