Grazie della precisazione ma le funzioni ritornano dei "valori standard"... ossia 0 in caso di successo e -1 in caso di errore.
Non credo sia corretto (da un punto di vista di buona programmazione) modificare i valori di ritorno.
Sbagli.
Non esiste un valore arbitrario.
if (condizione) valuta se la condizione è vera (1), falso (0). Il valore di ritorno che tu dai al main è un'altra cosa.. Sta a significare che il programma è uscito senza errori, questioni del SO (a parte che nessuno ti vieta di ritornare un qualsiasi valore), ma non ha senso applicare questo concetto ad una funzione a parte che hai sviluppato tu.
Come codice di esempio ti posto questo piccolo esercizio:
codice:
#include <stdio.h>

#define N 10

int compare(int a[], int b[]);

int main()
{
  int i, a[] = {0,1,2,3,4,5,6,7,8,9}, b[] = {0,1,2,3,4,5,6,7,8,0};
  
  for(i=0;i<N;i++)
    printf("a[%d] = %d\tb[%d] = %d\n", i, a[i], i, b[i]);

  if(compare(a, b))
    printf("The two arrays are equals\n");
  else
    printf("The two arrays are differents\n");
    
  return 0;
}

int compare(int a[], int b[])
{
  int i = 0;

  while(i<N) {
   if(a[i] == b[i])
    i++;
   else
    return 0;
  }
  return 1;
}
Prova a cambiare i valori di ritorno nella funzione compare e vedi che i risultati sono differenti, e non corretti secondo l'implementazione dell' if in main..
Bueno, non voglio interfierire troppo con queste cose con la domanda di Neptune.