Ciao a tutti. Ho iniziato ora a ri-studiare (seriamente) il linguaggio C.

Nonostante non sia un programmatore neofita, non riesco a capire dove si trova l'errore in questo blocco:

do {

printf("Inserisci l'operatore (+, -, *, /): ");
scanf("%c", &op);

if (op != '+' && op != '-' && op != '*' && op != '/') {

printf("\nErrore di inserimento!\n\n");
i = 0;

} //end if
else {
i = 1;
} //end else

} //end do

while (i == 0);

Una volta compilato e avviato, il programma esegue tutte le istruzioni contenute nel DO senza contare la presenza dell'IF, per poi tornare indietro e svolgere tutto come dovrebbe. Mi spiego, l'output ottenuto è:

[...]

Inserisci l'operatore (+, -, *, /):
Errore di inserimento!

Inserisci l'operatore (+, -, *, /):
//solo a questo punto è possibile inserire effettivamente l'operatore e da qui in poi tutto regolare.

[...]

Vorrei capire se si tratta di un mio errore, oppure se (cosa che escludo al 90%) è un errore nella compilazione.

Vi prego sto impazzendo!
Grazie!

(compilo con gcc per mac da terminale)