Ausdrucksergebnis wird nicht verwendet, wenn Zähler - c, Zeiger, Operatorrangfolge inkrementiert werden

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

Ich übergebe eine Warteschlange und einen Knoten, den ich hinzufügen möchtees in diese Hilfsfunktionen. Alle Zeilen, die ein Inkrement enthalten, werfen jedoch einen Fehler "Ausdruck Ergebnis unbenutzt". Ich möchte Operationen in dieser Warteschlange in Hilfsfunktionen ausführen, ohne dass dieser Fehler auftritt.

Antworten:

2 für die Antwort № 1

Ein Ausdruck wie

  *queue->front++;

geparst werden als

  *( queue->front++) ;

durch Betreiber Vorrang, so ist das Endergebnis (erhalten durch Anwendung des Dereferenzierungsoperators) ungebraucht. Darüber beschwert sich der Compiler und meine Vermutung ist richtig.

Höchstwahrscheinlich ist was du willst

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

0 für die Antwort № 2

Erklärung *queue->count++ aufgrund der Vorrang des Betreibers bedeutet eigentlich *(queue->count++)und ich frage mich, warum dieser Code keine andere Fehlermeldung gibt. ich nehme an, dass count, frontusw. sind integrale Werte; Deshalb, *queue->count Dereferenziert einen Integralwert, der nicht erlaubt ist, da nur Zeiger dereferenziert werden können.

Ich denke, was du eigentlich willst ist queue->count++.


0 für die Antwort № 3

Versuchen Sie, auf void umzuleiten, um dem Compiler mitzuteilen, dass nichts zurückgegeben wird

(void)*queue->front++;

Speisekarte