Výsledok výrazu sa nepoužíva pri zvyšovaní protiútoku, ukazovateľov, priorita operátora

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

Odovzdávam frontu a uzol, do ktorého chcem pridaťdo týchto pomocných funkcií. Avšak všetky riadky, ktoré zahŕňajú prírastok hodiť "výsledok nevyužité výsledok" chyba. Chcel by som vykonávať operácie na tejto fronte v pomocných funkciách bez toho, aby sa vyskytla táto chyba.

odpovede:

2 pre odpoveď č. 1

Výraz ako

  *queue->front++;

analyzovať ako

  *( queue->front++) ;

kvôli priorita operátora, takže konečný výsledok (získaný použitím operátora dereferencie) je nepoužívaný, To je to, čo si kompilátor sťažuje a moje hunch je, je to správne.

Pravdepodobne to, čo chcete, je

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

0 pre odpoveď č. 2

výkaz *queue->count++ kvôli prednosti obsluhy skutočne znamená *(queue->count++), a zaujímalo by ma, prečo tento kód neposkytuje iné chybové hlásenie. Predpokladám to count, front, atď. sú integrálne hodnoty; Z tohto dôvodu *queue->count dereferences je integrálnou hodnotou, čo nie je povolené, pretože môžu byť dereferencované len ukazovatele.

Myslím, že to, čo skutočne chcete, je queue->count++,


0 pre odpoveď č. 3

Pokúste sa odhodiť do prázdna, aby ste povedali kompilátorovi, že nič nie je vrátené

(void)*queue->front++;

Ponuka