我读到过后缀递增和递减运算符返回操作数的rvalues。假设这是真的,那么像这样的代码怎么可能存在?:
int arr[5]{};
int *p = arr;
for (int i = 0; i != 5; ++i)
*p++ = i;
我的思路是
- 根据运算符优先级,
*p
将首先被计算。 - 然后后缀递增将增加值并返回对象的副本作为 rvalue。
- 然后我感到困惑,因为 rvalues 不应该出现在赋值运算符的左侧......
所以我的问题基本上是:如何实现
*p++ = i;
?