我在 c++ 中遇到了与以下类似的代码,但我不确定它到底做了什么。
*x++ = *y++;
Run Code Online (Sandbox Code Playgroud)
x
和y
是对uint32
s 的引用。
我知道这++
是后增量运算符和*
取消引用,但我仍然不确定它到底是做什么的。
C++ 标准 - 7.6.1.6 递增和递减expr.post.incr
您的表达式*x++ = *y++;
将后缀运算符++
应用于每个指针,x
并y
在*x = *y;
发生赋值之后。本质上,每个操作数的值都是应用任何增量之前的值。在值计算之后应用增量。
标准语言是:
1 后缀
++
表达式的值是其操作数的值。[注1:获取的值为原始值的副本。— 尾注]
操作数应为可修改的左值。... 操作数对象的值被修改(defns.access),方法是给它加 1。++ 表达式的值计算在修改操作数对象之前进行排序。...
2 后缀的操作数
--
与后缀++
运算符类似地递减。
C-Standard 中的等效部分是6.5.2.4 后缀自增和自减运算符
如果您有任何其他问题,请告诉我。