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为真。
也许您在想的是按位运算符。按位和是just &
,以及按位或is|
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句