匿名内部类 2017-10-10 04:33 采纳率: 50%
浏览 1148
已采纳

关于c语言的运算顺序。

今天老师讲作业,碰到下图第八题,按照老师的说法,++运算符的优先级大于关系运算符和逻辑运算符,所以这题的答案是a=4,b=6。但是我记得自己写过这个程序,结果并不是这样,然后又写了一次,如下图34。
依旧和老师讲的不一样,但是翻了书,后面的优先级确实是算数运算符大于&&运算符。
我想的是,&&运算符和||运算符都是先算左边再算右边,&&运算符算出左边为假就不会继续运算,后面的++a也就不执行,||同理。但是这样想就和书后面的运算顺序还有老师的说法矛盾了,&&运算符的优先级很低,所以求助大佬,这个该怎么理解。图片图片图片图片

  • 写回答

4条回答 默认 最新

  • threenewbee 2017-10-10 05:37
    关注
     int a=3;
    int b=5;
    a>b&&++a; //a>b不满足,所以++a不执行
    a<b||++b; //a<b满足,所以++b也不执行
    printf("%d %d", a, b); //所以还是3 5
    和优先级没关系,你可以认为,条件表达式优化,导致部分表达式不求值,这个比任何优先级都高
    上机验证
    3 5
    https://ideone.com/jMSAyH
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站