求C语言高手解答

[复制链接]
查看11 | 回复4 | 2013-2-4 11:42:40 | 显示全部楼层 |阅读模式
c是比较智能的,当他明确知道一个表达式的值时,剩下的式子不会再进行运算。比如&&运算,当两个值其中一个为0时,他就是0了,第二个式子就不用运算,由于a=5,b=6(m=a>b)相当于(m=5>6)所以,m=0所以表达式(m=0)的值为0所以(m=a>b)&&(n=c>d)的值就是0所以n=c>d没有运算,所以运算后n的值不变还是2...
回复

使用道具 举报

千问 | 2013-2-4 11:42:40 | 显示全部楼层
当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。m=a>b已为假,假&&任何条件都为假,所以后个括号内不运行。...
回复

使用道具 举报

千问 | 2013-2-4 11:42:40 | 显示全部楼层
上面那位仁兄的答案是正确的,呵呵。((m=a) > b) && ( (n=c) > d )这个是不是学校考试?其实实际工作中,这么晦涩难懂的代码是非常糟糕的代码,建议少用少学...
回复

使用道具 举报

千问 | 2013-2-4 11:42:40 | 显示全部楼层
因为(m=a>b)不成立,所以第二部分不执行...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行