递增计数器时未使用表达式结果

时间:2017-06-08 06:19:52

标签: c pointers operator-precedence

void insert(size_t node, queue_t* queue) {
    *queue->count++;
    queue->elements[++(*queue->rear)] = node;
}
void remve(queue_t* queue) {
    *queue->front++;
    *queue->count--;
}

我正在将一个队列和一个我希望添加到其中的节点传递给这些辅助函数。但是,涉及增量的所有行抛出一个"表达式结果未使用"错误。我想在辅助函数中对此队列执行操作,而不会发生此错误。

3 个答案:

答案 0 :(得分:2)

这样的表达式
  *queue->front++;

解析为

  *( queue->front++) ;

由于operator precedence,所以最终结果(通过应用取消引用运算符获得)是 unused 。这就是编译器抱怨和我的预感,这是正确的。

最有可能的是,你想要的是

       (*(queue->front) )++ ;

答案 1 :(得分:0)

由于运算符优先级而导致的语句*queue->count++实际上意味着*(queue->count++),我想知道为什么此代码不会给出不同的错误消息。我假设countfront等是整数值;因此,*queue->count取消引用一个整数值,这是不允许的,因为只有指针才能被取消引用。

我想,你真正想要的是queue->count++

答案 2 :(得分:0)

尝试转换为void以告诉编译器没有返回任何内容

(void)*queue->front++;