这个 C 指针代码产生了什么? [ulong 指针 -> uint]

What does this C Pointer Code Produce? [ulong pointer -> uint]

大家好,

我目前正致力于将一些旧的 C 库移植到 C#,但在理解包含指针的某段代码时遇到一些麻烦。
在 C 方面我不是最好的,所以我可能缺乏一些理解。

这是我正在查看的内容的简化版本:

unsigned int block[2];

// --- inside a function

unsigned int *block;       // only got access to this pointer not the array
unsigned long left, right;

// some math


*block++ = right;  // these lines are the important bit i dont quite get
*block = left;

现在...

到目前为止我认为我得到的是:

现在让我头疼的是最终结果 (blocks[]) 的样子。
(遗憾的是不能调试它并看一眼,因为我真的不知道 id 是如何使用 lib 二进制文件做到这一点的...)
如果 leftright 也是 uint 会相当简单,但它们都是 ulong,所以可能正在进行某种覆盖,对吗?

对此我有点困惑/迷茫... 也许你们中有更好的 C 知识的人可以帮助我 ^^

这基本上是在做:

block[0] = (unsigned int) right;
block[1] = (unsigned int) left;

并且将 unsigned long 转换为 unsigned int 只是丢弃多余的高位。