C语言中的复合赋值运算符“%=”怎么用?

a+=b%=a+b这个表达式的值是多少?

要点1: *=,+=,-=,%= 等符号的应用是同道理的: 即把左边的移过右边运算(右边用括号包住,表示先运算),结果再给左边(注意左边只能是变量,不可为表达式)A += B 等价于A = A + (B); (B可以是值或表达式,这里的=仍是赋值号哦,B打括号是因为它可以是表达式) 如 x += 1; ===== x= x+1; x += 1+2+3; ===== x =x+(1+2+3); x += a+b+1 ==== x= x+(a+b+1); 要点2:就个这样的符号的运算,则从最右边的那个开始计算,一直到左边例如: A += B %= A -= B--------------3------2----1 (3个这样的符号)从*最右边*来分析(按符号顺序): 1: A=A-(B) ,得到了A的新值 2:B = B%(A), 得到了B的新值 (注意该A是新值哦) 3: A=A+(B), 再次得到了A的新值 (注意右边的A也是1的新值,B是2的新值) 懂了上面,你应该可以分析自己的了~~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-10
%=的用法是,把%移到右边。比如a %= b;那就把a和%移到右边,但左边还有一个a。最后等于a = a % b;像楼主说的a+=b%=a+b;因为赋值语句是从右到左计算的,所以先要计算最左边的a+b;也就是成这样:a+=b%=(a+b),根据上面说的,%=用法,现在把b和%移到右边,那就成a += b = b %(a+b);其实计算出b %(a+b);的值,然后赋值给b,最后是a +=b,然后把a和+移过右边,成a = a + b;