int a=12;求(++a)+(a++)的值.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 13:32:19
int a=12;求(++a)+(a++)的值.
int a=12;求(++a)+(a++)的值.
int a=12;求(++a)+(a++)的值.
执行这个式子后 a是14 前后分别+1
你是求什么.这个式子.还是最后的a
如果结果式是 a=(++a)+(a++) 那么a=27 a=(13)+13++
如果结果式是 b=(++a)+(a++) 那么b=26 b=(13)+(13++)
一些脑 残老师的题,要做程序员就不要写这种让人迷糊的语句,
++a,是"前自加",求解表达式后,才将a加1。
a++是"后自加",将a加1后,再求解表达式。
c++中操作符优先级规定,自增操作符的优先级高于算术操作符(此处为+操作符),而后自增(例如a++)操作符又高于前自增操作符(例如++a,当然自减操作符同样遵循),如果有括号就先执行括号的表达式!
于是:
int a = 12;
(++a) + (a++);/*...
全部展开
++a,是"前自加",求解表达式后,才将a加1。
a++是"后自加",将a加1后,再求解表达式。
c++中操作符优先级规定,自增操作符的优先级高于算术操作符(此处为+操作符),而后自增(例如a++)操作符又高于前自增操作符(例如++a,当然自减操作符同样遵循),如果有括号就先执行括号的表达式!
于是:
int a = 12;
(++a) + (a++);/*首先计算后面的表达式后自加(a++),于是此时a = 13,然后2个a相加结果就等于26,最后a的值还要执行前自加表达式(++a),于是a为14 */
最后即便没有括号例如:++a + a++;该表达式根据优先级原则,结果同样是26!
收起