a+=a-=a* a其中a=3

a+=a-=a* a其中a=3

问题描述:

img

       下午5:01
                         第二章作业
12.单选题
若有:inta=3;执行表达式:a+=a-=a*
a后,a的值是()。
         3
  B 9
         -12
  D 6
                             12/30
  <上一题 下一题>
                             答题卡

【答案】 a = -12
【解析】:


运算符优先级,赋值运算符的优先级 从右到左计算
 a - = a*aa = a - a*a = 3 - 3*3 = -6
a +=a = a+a = -6 -6 = -12

#include<stdio.h>

int main(void) {
    int a = 3;
    a +=a-=a*a;
    printf("a=%d",a);
    return 0;
}

img

这题考察的是运算符的优先级和结合方向

int a = 3;
a += a -= a*a;

本题中运算符的优先级从大到小是:* -= ( += ) //()代表优先级一样
结合方向都是从右到左。
所以说执行顺序是: a += a -= a * a----> a += a = a - a * a --> a += a = -6 --->a =a +a =-12;
即从右边开始算就可以得出-12