c语言。下面程序运行的结果是。答案是d,但为啥

如题所述

!的优先级最高,但是它的结合方向是从右至左,所以上式等价与: !( 4&& ( !(5|| (!0) ) ) ).追问

还是不懂… !5得到的结果是啥

追答

!( 4&& ( !(5|| (!0) ) ) ):
所有非零的数在判断时为1,括号语句从里面开始判断,所以最里面的!0~1, (5||1)~1, !1~0, (4&&0)~0, !0~1

追问

为啥5//1是1

追答

a||b语句, a,b中有一个为真则为真,同时为假才为假。
a&&b语句,a,b同时为真才为真,否则为假。
数字做判断时,0为假,非零为真。
所以5||1为1。

需要注意的是,||,也就是逻辑或,当前面的为真,计算机就不判断后面的了; &&,也就是逻辑与,当前面为假,就不判断后面的。

追问

5是真还是假还是都不是? 逻辑或的时候 不是前面是真就不执行后面了吗

温馨提示:答案为网友推荐,仅供参考
相似回答