int a=12,a+=a-=a*=a的值
-264。
1、先计算a-=a*a,得到a=12-12*12=-132;
2、a+=-132,得到a=-132-132=-264。
+= 加后赋值,变量+=表达式 如:a+=3;即a=a+3;-= 减后赋值,变量-=表达式 如:a-=3;即a=a-3。
赋值运算符的计算顺序是从右到左,大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。而且它的优先级别低于其他的运算符,所以对该运算符往往最后读取。
扩展资料:
优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后结合。
参考资料:
百度百科-赋值运算符
百度百科-运算符优先级
先运算乘号,优先级3,a*a 此时结果144
a+=a-= x 这个式子是 由 a = a+() 和 a = a - () 复合而来 ()代表前面的式子
+= 和-=的优先级从右到左 所以先算 a-= 再算 a+= ,
所以式子其实是
a=a-a*a -132 = 12-144
a = a+a -264 = -132-132
答案 -264
另外,编译器不会说谎
这个其实是错误的,按照这样那么对a初始化的部分是a+=a-=a*=a,但是a没有初始化,所以矛盾了,应该这样的吧;
int a=12;
a+=a-=a*=a;
那么a为0
a+=a-=a*=a可以一步步的分解
先算a*=a->a=a*a
a=12*12=144
再算:a-=a*=a,相当于a-=144->a=a-144,
a=0
再算a+=a-=a*=a,a+=0
a=0
a+=a-=a*=a就是赋值表达式,从右向左一步步算就好了
等价于
a=a*a; //a=144
a=a-a; //a=0
a=a+a; //a=0
最后 结果为0
从右边开始算起
不知道怎么回事。。。这个a-=a出来必然为0啊。。。这个表达明显是错的
招衬亿美: 结果是-264,此题是右结合,开始是a*a,即为144,第二步,a-=144,所以,a=a-144=12-144=-132,第三步,a+=-132,即为:a=-132+(-132)=-264
大理市15639445912: 关于C 语言中运算问题 a=12 a+=a - =a*=a 怎么计算的 - ?
招衬亿美:[答案] 很简单,赋值是从右往左操作,所以你可以把这个语句分解开:int a=12; a*=a; a-=a;//注意到这里a=a-a=0! a+=a;一目了然了吧! 所以最后a=0;
大理市15639445912: int a=12;a+=a - =a*=a的计算过程及结果 - ?
招衬亿美: a+=a-=a*=a 相当于->a=12*12然后a=a-144=0然后a=a+a=0
大理市15639445912: C++中 int a=12;a+=a - =a*=a怎么计算 - ?
招衬亿美: 赋值语句从右到左依次计算 所以a+=a-=a*=a; 相当于: a*=a; a-=a; a+=a; 所以相当于: a=a*a==12*12==144; a=a-a==144-144==0; a=a+a==0+0==0;最后a的值是0
大理市15639445912: a=12,a为int型, a+=a - =a*=a结果为多少?求详细解答 - ?
招衬亿美: a+=a-=a*=a; 先计算a*=a结果为144并赋给a,然后计算a-=a结果为0并赋给a,最后计算a+=a结果为0并赋给a,所以最后输出为0
大理市15639445912: a=12 a+=a - =a*=a 这个计算的过程是怎样的 结果是多少 求指教 - ?
招衬亿美:[答案] 0;a=a*a,赋值a②,144-144=0,给a③a=a+a=0+0=0
大理市15639445912: C有关算术表达式的问题设int a=12,则执行完语句a+=a - =a*a后,a的值是______.A、552 B、264 C、144 D、 - 264知识点:算术表达式------------------------------... - ?
招衬亿美:[答案] 做这种题要清楚运算符的优先级,这道题从右到左运算,*先算,a*a=144,再算a=a-144,得出 -132,再算a=a+a,得出-264
大理市15639445912: 求出a的结果a=12,通过a+=a - =a*=a 最后a等于多少? - ?
招衬亿美:[答案] a=12; a=a*a;//a=12*12 a=a-a;//a=0; a=a+a;//a=0; //////// a=12; a+=(a-=(a*=a));