¿Debo devolver 0 o 1 para una función exitosa?

Posible duplicado:
Manejo de errores en código C
¿Qué valor de retorno debe utilizar para una llamada de función fallida en C?

Siempre uso 0, pero no es realmente legible en if , while , etc.

¿Debo devolver 1? ¿Por qué la función principal return 0 para el éxito?

Está definido por el estándar C como 0 para el éxito (los créditos van al hvd).

Pero

Para una mayor portabilidad, puede utilizar las macros EXIT_SUCCESS y EXIT_FAILURE para el valor de estado convencional para el éxito y el fracaso, respectivamente. Están declarados en el archivo stdlib.h .

(Estoy hablando del valor devuelto al sistema operativo desde las llamadas principales , de salida o similares)

En cuanto a su función, devuelva lo que desea y hace que el código sea más legible, siempre y cuando lo mantenga así a lo largo de sus progtwigs.

La razón por la cual el uso main 0 para el éxito es que se usa como el código de salida de la aplicación al sistema operativo, donde 0 generalmente significa éxito y 1 (o superior) significa falla. (Por supuesto, siempre debe usar las macros predefinidas EXIT_SUCCESS y EXIT_FAILURE ).

Sin embargo, dentro de una aplicación, es más natural usar cero para fallas y no cero para tener éxito, ya que el valor de retorno se puede usar directamente en un if como en:

 if (my_func()) { ... } 

Si está devolviendo un estado booleano, podría escribir un int y usarlo. Esto hace que el tipo de retorno de sus funciones sea obvio y usted (y otros) no tendrán que verificar si devuelve 0 o 1 para siempre .

 typedef int BOOL; #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif BOOL myfunc() { ... return TRUE; }