C语言:设abcd均为0执行(m=a==b)&&(n=c!=d)后 m n的值为

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com