Ho provato scrivendo
codice:
int a = 1;
printf("%D", !a);
e funziona.

Cmq ho risolto modificando:
codice:
int confronta(int i, myStruct *a, myStruct x, int *ritorno)
{
    ritorno[0] a[i].id < x.id;  
    ritorno[0] a[i].id > x.id;       
}
// ...
int r[2];
while (confronta(i, ID, a, x, r), r[0]) i++;
while (confronta(j, ID, a, x, r), r[1]) j--;
Non è molto elegante ma funziona!!!