一个c语言的问题,求大神指教
设a=5,b=6,c=7,d=8,m=2,n=2执行(m=a>b)&&(n=c>b)结果:n的值为2...
设a=5, b=6, c=7, d=8, m=2, n=2
执行 (m = a > b) && ( n = c > b)
结果:n 的值为 2 展开
执行 (m = a > b) && ( n = c > b)
结果:n 的值为 2 展开
5个回答
展开全部
首先你要明确&&的运算符是从左到右运算的,而且&&是作与运算,当2者为真的时候才成立,只要有一个是假的时候就不成立,从左到右,因为a<b所以判断结果是假,所以不用执行后面的判断,n的值没有重新赋值,所以n值是2,做这个要考虑运算符的优先级和运算符的结合性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a>b为假 &&运算不执行后面的 n=c>b
所以n的值还是2
所以n的值还是2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关系的优先级要比赋值的优先级高,所以先进行a>b运算,关系比较的结果只有1或0,这里的a>b条件不成立所以把0赋值给m,又因为0&&(n = c > b)进行的是“与”运算,所以得到为零时就已经能判断出是假了,所以 ( n = c > b)不执行。书上都有介绍的所以n的值不变为2
更多追问追答
追问
那如果是:1.(m=ab) 2.(n=c>b)&&(m=a>b)的结果是什么
追答
第一题的n=1,第二题的n=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
题中的两个括号里均是关系运算符和赋值运算符,外面是一个‘与’符号连接,‘&&'符号是前表达式为真则计算后表达式,前表达式为假则后表达式不再计算,而对于本题,前表达式a>b为假则值为0,导致前表达式为假,所以后表达式不再计算,则直接为2
追问
那如果是:1.(m=ab) 2.(n=c>b)&&(m=a>b)的结果是什么
追答
第一个值为N=1 第二个N=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询