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.