发布网友 发布时间:2022-04-27 00:29
共5个回答
热心网友 时间:2022-06-21 17:52
普及下表达式优先级知识:! > 算术运算符 > 关系运算符 > 逻辑与(&&) > || > 赋值运算符
故执行 (m=a=b)&&(n=c!=d)的顺序是:逻辑与(&&)运算符优先左边括号内的表达式(m=a=b),然后是右边括号内的表达式(n=c!=d)
接下来看左括号,然后=(赋值)优先级低,先算a=b得到真赋值给m,m=1,然后整个括号内表达式为1;因为1 and 任意值 都为真!因此要继续看右边,c!=d为假,所以n=0
故结果m=1,n=0
有不对的请指教!追问我特别不懂到底是赋值还是判断真假。比如n=c!=d,为什么不是把C!的值赋值给N呢?C!为1. n=c! 那么也是1.
追答赋直运算符的优先级比判断真假的低,所以先判断真假,然后再做赋直运算
热心网友 时间:2022-06-21 17:52
首先来说说运算等级:()运算等级最高,==与!=的运算等级比=高,所以在(m=a==b)中,先执行a==b,结果为真,返回1,m=1;&&左边的式子返回值为真,故(n=c!=d)可以继续进行,同理,c!=d结果为假,返回值为0,n=0.
总的结果是m=1,n=0
热心网友 时间:2022-06-21 17:53
(M=1)&&(N=0)结果为0追问我特别不懂到底是赋值还是判断真假。比如n=c!=d,为什么不是把c!的值赋值给n呢?c!为1. n=c! 那么n也是1啊
追答c!的写法不正确呢,!作为位操作符只能放C的前面才对,而这个题的意思是!和=结合的,也就是!=,表示不等于。更重要的是,两个括号内的运算符都是后面的== 和!=的优先级更高,所以就有我写的了。
热心网友 时间:2022-06-21 17:53
m=1,n=0.
热心网友 时间:2022-06-21 17:54
true
false