这行代码在 C 编程中有什么作用?

the*_*ter 2 c data-structures

代码 :-

pu->queue[ pu->rear = (pu->rear + 1) % pu->size ] = x;

我知道队列的工作原理,但我只是对数组索引值内的分配变量感到困惑。这是一个好习惯吗?那样有用吗?我无法编译,因为我没有完整的代码。

编辑:-解决了。但该代码确实可以编译。现在我可以访问代码本身,它编译时没有警告。

ike*_*ami 5

它的简称

pu->rear = (pu->rear + 1) % pu->size;
pu->queue[pu->rear]
Run Code Online (Sandbox Code Playgroud)

表达式返回一个值,因此可以在更大的表达式中使用。语句不返回值,因此不能在表达式中使用(没有do { }-style 构造)。表达式通常可以用作语句(它的返回值被丢弃)。

在某些语言中,赋值是语句。在其他情况下,赋值是表达式。在 C 中,赋值是表达式。它们返回存储的值。像这样,

pu->queue[ pu->rear = (pu->rear + 1) % pu->size ]
Run Code Online (Sandbox Code Playgroud)

是简称

pu->rear = (pu->rear + 1) % pu->size;
pu->queue[pu->rear]
Run Code Online (Sandbox Code Playgroud)

该代码似乎正在实现一个循环缓冲区