c++中,关于多个连续复合赋值运算符的计算方法?

#include <iostream>
using namespace std;
int main ()
{
	int a,b;
	a=3,b=4;
	a+=b+=2;
	cout <<"a="<<a<<endl<<"b="<<b<<endl<<(a+=b+=2);
}

这是vs c++ 2010编写的程序,程序运行结果是a=17,b=8,想请教一下各位大佬,a,b的值是如何具体计算出来的

你自己加一些输出语句来判断,就可以了。 

a=3,b=4;

cout <<"a= "<<a<<" b= "<<b; 

a+=b+=2;

cout <<"a= "<<a<<" b= "<<b; 

本质上是由于cout是输出流,从右向左进行运算,

cout <<"a="<<a<<endl<<"b="<<b<<endl<<(a+=b+=2);

而本行代最后又有(a+=b+=2),从而使得(a+=b+=2)计算了两遍。故输出了如题叙述的那样的a,b的值