你确定两个都是16么~我刚测试了++k是17,k++是16,我说怎么算了半天也算不出你的结果,++的优先级高于括号,++k + (k+5)会先计算++k,++k是先自加后参与运算,所以此时k值为6,然后计算括号里的部分,此时是(6+5),于是结果是17。k++ +(k+5)会先计算k++,而k++是先运算后自加,所以这里它此时的值依然为5,然后计算括号里的,现在括号里的k值是6,所以最后的结果是16。如果觉得还算满意,请采纳。
++的优先级低于()
所以先算k+5 结果为5+5是10
然后
++优先级高于+
所以再算++k 结果为5+1 是6
最后算+结果为6+10 是16
先算k+5得到10,在算++k得到6,相加16,从右到左。
k++表示在使用变量k之后,使k的值加1;
++k表示在使用变量k之前,使k的值加1;
所以int s = ++k + (k+5)表示:先将k加1(k==6),再加k+5(6+5),
s=6+(6+5);得出k==6, s==17
而int s = k++ +(k+5)表示:先使用k(k==5),然后算k++,(k==6),然后算k+5,(6+5),最后相加。即s=5+(6+5),得出k=6,s=16