句内变量++不影响该句内其他地方该变量的值
inline void solve() {
ll ans = 0;
ll Mod = 1e9 + 7;
int q;
cin >> q;
int idx = 0;
vector<ll> arr(5e5 + 10, 0);
while (q--) {
int t, v;
cin >> t >> v;
idx -= t;
// cout<<arr[0]<<" "<<arr[1]<<endl;
arr[1]=100,arr[2]=2,arr[3]=3;
idx=2;
arr.at(++idx) = arr.at(idx - 1) + idx * v;
cout<<"idx = "<<idx<<endl;
cout<<arr[1]<<" "<<arr[2]<<" "<<arr[3]<<endl;
// cout << arr[idx]%Mod << endl;
}
}
针对这一句代码
arr.at(++idx) = arr.at(idx - 1) + idx * v;
一开始我想的是idx在一开始arr.at(++idx)中就已经++了,然后等号后面的idx理所当然是加后的idx,我想他这句话的执行顺序是按照从左到右去执行的,但是实际上不是的,
运行结果如果是按照从左到右我想的那个样子的话,应该是
输入:
1
0 1
输出:
idx = 3
100 2 4
但是实际上输入输出的结果是这样的:
体现出了这个表达式中压根没用到arr[2]这个值,只用到了arr[1]来给arr[3]赋值。
因此我猜想,句内变量++赋值是不会影响该句内此变量的在其他地方的值的。
PS.
chatGPT误我!