我想知道C++中复合赋值的执行流程。我遇到了一个CodeChef 问题,我正在计算 NCR mod p 值并将它们加在一起以获得最终答案:
// correct
for(int i=min1; i<=max1; i+=2){
ans = (ans+ncr_mod_p(n,i))%mod;
}
// incorrect
for(int i=min1; i<=max1; i+=2){
ans+=ncr_mod_p(n,i)%mod;
}
这是由于整数溢出而发生的。
那么,复合赋值的执行顺序是怎样的呢?
比方说,如果我们有一个等式,a+=b%c
那么执行顺序是什么:
a = (a+b)%c
// OR
a = a+(b)%c;