代码:-
pu->queue[ pu->rear = (pu->rear + 1) % pu->size ] = x;
我知道队列的工作原理,但我只是对数组索引值内的变量分配感到困惑。这是一个好习惯吗?那样有用吗?我无法编译,因为我没有完整的代码。
编辑:-解决。但是该代码确实可以编译。现在,我可以访问代码本身,因此可以编译而不会发出警告。
这是短的
pu->rear = (pu->rear + 1) % pu->size;
pu->queue[pu->rear]
表达式返回一个值,因此可以在较大的表达式中使用。语句不返回值,因此不能在表达式中使用(没有do { }
-style构造)。表达式通常可以用作语句(其中返回值将被丢弃)。
在某些语言中,分配是语句。在其他情况下,赋值是表达式。在C语言中,赋值是表达式。他们返回存储的值。因此,
pu->queue[ pu->rear = (pu->rear + 1) % pu->size ]
是短的
pu->rear = (pu->rear + 1) % pu->size;
pu->queue[pu->rear]
该代码似乎正在实现循环缓冲区。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句