求解答不会啊

来源:4-14 结束语句之break语句

慕粉3826426

2016-08-14 22:06

#include

main() { int a=0,b=0,c=0; c=(a-=++a),(a+=b,b+=4); printf("%d,%d,%d",a,b,c); } 为啥运行结果是0,4,0.  谁知道运算过程,求解答

写回答 关注

4回答

  • 我改名字了
    2016-08-21 21:34:22

    想学习的猪猪给你的正解。

    前提是优先级:(百度。优先级C语言,算数运算符,算数表达式优先级)

    a++意义是。(变量名)a中的值(自增一)。(自增一)就是(0+1).即 ( 1)  int a=1;

    -=为:赋值运算符。第一个运算表达式(a-=++a;) 即(a=a-a).  等号左边是(变量名)所以他就等于(a=1-1)

  • 我改名字了
    2016-08-21 21:10:41

    #include<stdio.h>

    main() 

        int a=0,b=0,c=0;

        a-=++a;

        printf("%d\n",a);

        

        c=a;

        printf("%d\n",c);

        

        a+=b;

        printf("%d\n",a);

        

        b+=4;

        printf("%d\n",b);

        

        printf("%d,%d,%d",a,b,c);

    }


  • 想学习的猪猪
    2016-08-14 23:07:27

    因为a-=++a中++符号优先级别比-=高所以在这个式子中的a都为++a所以结果就变成了a=++a- ++a最后变成括号中为0,所以c=0。至于b应该最简单,就是b=b+4所以b=4。

  • qq_internationa_03820599
    2016-08-14 23:03:10

    c=(a-=++a):看一下算法的优先级“++”先执行,即执行完后a=1;然后再执行“-=”,即a=a-1,所以执行完后a=0;即a=c=0;

    a+=b:执行完后a=b=0;

    b+=4:执行完后 a=0;b=4;c=0

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926894 学习 · 21492 问题

查看课程

相似问题