int k = 9, x = 14;
x %= (k %= 5)
x %= (k - k % 5)
x %= k - k % 5
(x %= k) - (k %= 5)
第2行的x %= (k %= 5) 这里的 %= 是运算符的一种叫复合赋值运算符你可以这么认为此表达式等价于
x = x % (k %= 5) 变形后 ()运算符的优先级最高 所以先算k %= 5 这个也是个复合运算符
再次变形
k = k % 5 结果是:4
x = x % 4
x = 14 % 4
x = 2
第2行等于2
第2行的x %= (k - k % 5) 等价于
x = x % (k - k % 5) 变形后 ()运算符的优先级最高 所以先算k - k % 5 等于14-14%5由于%运
算符此时优先级别先算14%5得4
等于14-4等10
等于x = x % 10
x = 14 - 10
x = 4
第2个等于4
k = k % 5 结果是:4
x = x % 4
x = 14 % 4
x = 2
第2行等于2
第3行的x %= k - k % 5 变形后 x =x % k - k % 5 由于%运算符的优先级最高(由于表达式里面出现了2个%运算符此时需要根据运算符的结合性来判断哪个%先运算(由于%是算数运算符号(算术运算符的结合方向为“从左至右”))) 所以先算x % k
=14 % 9
=5
x =5 - k % 5
x = 5 - 14 % 5 先算14 % 5
x = 5 - 4
x = 1
第3个等于1
第4行的(x %= k) - (k %= 5) 变形后 (x = x % k) - (k = k % 5)由于此时()运算符的优先级最高再根据()运算符的结合性 所以先算x = x % k
x = x % k
x = 14 % 9
x = 5
5 - (k = k % 5)
k = k % 5
k=4
5-4
=1
第4个等于1
以上就是考察你的运算符的优先级别和运算符的结合性
第一个 2
第一个 4
第一个 1
第一个 1