Я хотел бы знать поток выполнения составных назначений в С++. Я наткнулся на вопрос 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;