大一c语言,明天要考试,求帮助 希望能给出详细过程

大一c语言,明天要考试,求帮助
希望能给出详细过程

第1个回答  2016-01-03

    a+=a*a; 即a=a+a*a;  得a=42;

    然后 a-=42;  即 a=a-42;  

    所以最终结果是0;

    其实 a-=a+=a*a;等价于 a-=(a+=a*a);等价于 a=a-(a+=a*a);

第2个回答  2016-01-03
a-=(a+=(a*a); 等于

a=6+6*6=42;
a=a-a=0 (复合运算符的返回值是变量自身)追问

可否再问你一题

追答

冒号表达式这里相当于

if((--x)==(y++))    a=(--x);    //(x--)=4   x=y=3  比较完之后y自增  y=4
                                //  a=(--x)=2
else                a=(++y);    //  显然,这个else条件不成立,跳过

b=(x++);                        //b=x  ;++x;   所以b=2  x=3
c=y;                            //因为y=4  所以 c=4

第3个回答  2016-01-03
c从右往左计算,先算a*a=36,再算a+=a;a=72;再算a-=a;a=0

a+=a---->a=a+a
a-=a----->a=a-a本回答被提问者采纳
第4个回答  2016-01-03
无论a开始做了怎样的变化,最后一步理解为a-=a就行了,为0追答

a-=a就是最后一步,前面的都不用考虑!

追问

还是没太懂,能否再讲解一下😭

追答

-=符号右边最后返回的是改变后的a的值,再执行a-=a为0

追问

为什么改变后还是a值?

追答

a+=5难道返回的不是改变后的a的值!

相似回答