ragazzi non capisco questa porzione cdi codice.praticamente la funzione inserisce l'elemento val in coda alla coda.ma cosa vuol dire quel pezzo di codice???

codice:
int q_put(queue_t * q, long val){
     if (q->num < QUEUESIZE) {//se la coda non è piena inserisci
     q->data[q->tail] = val; 
     q->tail = (q->tail + 1) % QUEUESIZE; <------//COSA VUOL DIRE?
     q->num++;
     return 0;
     }
     return 1;
}