想询问各位在c语言中逻辑判断的问题
这一段代码中 不太懂其中 【!6 > 0 < 4】 该怎么理解为好
我试过单独输出值,其值为1
所以是说6>0<4只要有一个是对的就能输出一了吗?
不太确定故想来请教一下
a = !(!6 > 0 < 4 && !(8 > 5 > 2) && (9 > 6 || !(8 - 5 > 6)));
想询问各位在c语言中逻辑判断的问题
这一段代码中 不太懂其中 【!6 > 0 < 4】 该怎么理解为好
我试过单独输出值,其值为1
所以是说6>0<4只要有一个是对的就能输出一了吗?
不太确定故想来请教一下
a = !(!6 > 0 < 4 && !(8 > 5 > 2) && (9 > 6 || !(8 - 5 > 6)));
这个主要是bool运算,任何非0的数都是true,0都是false, 然后转换为bool型后,true值就为1,false就为0
我们一个个来,先说优先级: 括号 > 非号 > 减号 > 大于号 > && > ||
那就一个一个来
&&左边的:
!6 = 0;
0>0 //false,所以等于0
0 < 4 // 为true,所以等于1
&&中间的:
8 > 5 // 为ture,值为1
1 > 2 //为false 值为0
!0 // 值为1
&&右边的, 减号优先级大于大于号要先算的
9 > 6 // true, 值为1
!(8-5>6) = !(3>6) = !0 = 1
1||1 = 1
所以最后 !(1&&1&&1)=!1=0
具体的运算过程就是
a = !(!6 > 0 < 4 && !(8 > 5 > 2) && (9 > 6 || !(8 - 5 > 6)))
=!(0>0<4&&!(1>2)&&(1||!(3>6)))
=!(0<4)&&!0&&(1||!0))
=!(1&&1&&1)
=!1
=0