【发布时间】:2021-04-24 22:41:33
【问题描述】:
我想知道C++中复合赋值的执行流程。我遇到了CodeChef question,我正在计算 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;
【问题讨论】:
-
从最里面的括号开始。在括号中的操作相同的情况下,请参阅优先顺序。
-
只是谷歌 cppreference 运算符优先级?复合分配在那里并不特别。
-
我不是很自信。
标签: c++ assignment-operator compound-assignment