在 C++ 中,将取消引用的后递增指针分配给另一个取消引用的后递增指针的结果是什么?

cat*_*tch 4 c++

我在 c++ 中遇到了与以下类似的代码,但我不确定它到底做了什么。

*x++ = *y++;
Run Code Online (Sandbox Code Playgroud)

xy是对uint32s 的引用。

我知道这++是后增量运算符和*取消引用,但我仍然不确定它到底是做什么的。

Dav*_*ica 5

C++ 标准 - 7.6.1.6 递增和递减expr.post.incr

您的表达式*x++ = *y++;将后缀运算符++应用于每个指针,xy *x = *y;发生赋值之后。本质上,每个操作数的值都是应用任何增量之前的值。在值计算之后应用增量。

标准语言是:

1 后缀++表达式的值是其操作数的值。

[注1:获取的值为原始值的副本。— 尾注]

操作数应为可修改的左值。... 操作数对象的值被修改(defns.access),方法是给它加 1。++ 表达式的值计算在修改操作数对象之前进行排序。...

2 后缀的操作数--与后缀++运算符类似地递减。

7.6.1.6 递增和递减——expr.post.incr

C-Standard 中的等效部分是6.5.2.4 后缀自增和自减运算符

如果您有任何其他问题,请告诉我。