如果没有括号,结果是正确的13.问题出现在++与()的问题上。该问题可以简化为
b=(b++);
对也括号来说,内部运算优先级高,故执行b++,算术运算符放在右边,则b++的值在以没有增加的值得到的结果参与括号的整个运算,得到括号运算结果为未增加的b。此时运算括号与其他的算术运算符运算结果,并赋值给左边的b。 关键在于这里,b在括号运算结束后,执行了+1运算,此时b为10!但传递出来的参与运算的值未增加的9.运算的结果又重新覆盖了原来的b。 b的值9 变为 10 又被12覆盖
***总结一下:括号内运算完,执行b自增1;但括号的返回值确实之前的b运算的值。 **** 同理****若b=1;b=(b+++2)+2=5而不是6!那么请问b=1;b=(++b*2)*(b++*2)+2;
第一次回帖,有点乱,希望不影响你的好心情。
|