为了账号安全,请及时绑定邮箱和手机立即绑定

请分析下运算流程,最终n和k的值,谢谢。

请分析下运算流程,最终n和k的值,谢谢。

C
人还是要学点什么 2017-02-27 22:15:35
int n=2,k=0;  while(n++>2&&k++);
查看完整描述

3 回答

已采纳
?
Youare_my_sunshine

TA贡献16条经验 获得超12个赞

n = 3,  k=0;

&&是为  短路与,只要前边一个条件确定是false,结果也就是false,从而短路,不执行后边的代码。

                            只要前边一个条件确定是ture,结果也就是ture,从而短路,不执行后边的代码。

                   

&是        逻辑与,即时确定前边一个条件是false,但是依然要执行后边一个条件

所以  n++=3为真之后不执行后边的代码 k=0

查看完整回答
3 反对 回复 2017-02-27
  • 人还是要学点什么
    人还是要学点什么
    n++改为++n结果变成了n =3,k=1,按运算符的优先级别,就先执行了k++,再执行++n>2,最后执行&&,是这样吗?如果是这样,那我先前这个问题,就应该先执行n++,再执行k++,然后执行n++>2,最后还是&&,很困惑 。
  • 慕粉4327266
    慕粉4327266
    上面先执行n++,n++的值为2,所以n++>2为false,但n++执行了,所以n=3,&&如果前面的为false,则不执行后面的代码,如果前面的为true,则继续判断后面的代码。所以结果为n=3,k=0;你改完后还是先执行++n,++n=3,n=3,++n>2为true,所以再执行k++,&&运算符都是先执行左边的表达式,在执行右边的表达式,不要太拘泥于符号的优先级
  • 人还是要学点什么
    人还是要学点什么
    学习了!
?
人还是要学点什么

TA贡献2条经验 获得超0个赞

n++改为++n结果变成了n =3,k=1,按运算符的优先级别,就先执行了k++,再执行++n>2,最后执行&&,是这样吗?如果是这样,那我先前这个问题,就应该先执行n++,再执行k++,然后执行n++>2,最后还是&&,很困惑 。
查看完整回答
反对 回复 2017-02-28
  • 3 回答
  • 0 关注
  • 1473 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信