黑马程序员技术交流社区

标题: 疑问 求解答 [打印本页]

作者: supergcs    时间: 2014-11-13 11:46
标题: 疑问 求解答
设整型变量m,n,a,b,c,d均为1,执行“(m=a>b)&&(n=a>b)”后m,n的值是( 0,1)

请问这是为什么

求分析思路 谢谢
作者: 易拉罐    时间: 2014-11-13 13:23
因为刚开始m,n,a,b,c,d都为1,所以(m=a>b)就等价于(m=1>1),1>1为假也就是0,所以m=0;&&运算符只要有一边为假,就不用去计算另外一边,所以n=1.所以最后的结果就是m=0,n=1.
作者: supergcs    时间: 2014-11-13 14:01
易拉罐 发表于 2014-11-13 13:23
因为刚开始m,n,a,b,c,d都为1,所以(m=a>b)就等价于(m=1>1),1>1为假也就是0,所以m=0;&&运算符只要有一边为假 ...

谢谢你
作者: gabe    时间: 2014-11-13 16:00
(m=a>b)&&(n=a>b)”后m,n的值是( 0,1)
(1)=赋值优先级很低(第八级?建议去查询下并记住常见的优先级),所以先算a>b然后赋值给m,所以m= 0;
(2)&&运算会短路(即前面部分为假就不会计算后面部分),所以后面不运算n = 1(自己去查询&&和||的短路问题)
作者: supergcs    时间: 2014-11-13 20:54
gabe 发表于 2014-11-13 16:00
(m=a>b)&&(n=a>b)”后m,n的值是( 0,1)
(1)=赋值优先级很低(第八级?建议去查询下并记住常见的优 ...

谢谢  了解了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2