/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

¿como hago que una funcion me devuelva "true" ó...

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Wellingtom



Registrado: 19 Sep 2007
Mensajes: 20
Ubicación: venezuela

MensajePublicado: 21/09/2007 2:15 am
Título: ¿como hago que una funcion me devuelva "true" ó...

ó false....?

es decir... antes programé un poquito en visual basic... y podias usar la funcion de una forma mas comoda, es decir:
_________________________________________________________

/* acabo de definir una variable llamada " es_primo " (para saber si un numero es primo o no) */


int aaaaa = 5;

if (num es_primo(aaaaa) = true) /* estoy inventando */
{
printf ("el numero es primo");
}

else

{
printf ("el numero NO es primo");
}


________________________________________________________

así hacía en visual basic (casi), y funcionaba perfecto...

¿ como lo haria en C ?

es que a veces quiero que el resultado sea o true, o false... y no se como...
_________________
o sea hello!
Volver arriba
Yahoo Messenger
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 21/09/2007 3:50 am
Título:

En C90 (el estandar de facto) no existe el tipo bool, en C99 se ha definido como tal el tipo _Bool.
En C por definicion cualquier valor distinto de 0 es verdadero, por tanto se pueden evaluar funciones por su retorno.

Código:
if(foo() == 0) puts("verdadero") /* o al contrario */
         else puts("falso"); 

Esto tiene el detalle de que dependiendo del retorno de la funcion se evalua de una forma u otra, en la biblioteca estandar muchas funciones retornan 0 siendo "true" para validar bucles u otras estructuras de control.
Sin embargo hay que diferenciar entre lo que devuelve la expresion y lo que retorna la función.
Código:
foo() == 0
devuelve 1 (true) si la función retorna 0
pudiendose cambiar por:
Código:
if(!foo()) /*  */
en este caso usamos el operador de negacion, siendo equivalente que la expresion anterior.

No ostante si por alguna estraña razon quieres simular un tipo booleano puedes hacerlo mediante macros.
Código:
#define TRUE 1
#define FALSE 0
/*      */

pero tendrias problemas de legilibilidad, debido a las funciones que retornan 0.

S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 21/09/2007 8:57 am
Título:

Como ya te aclaro Cheroky basta con devolver un valor distinto de cero para que este se tome como verdadero (y cero como falso).

Un ejemplo practico de esto son las funciones cuyos prototipos se encuentran en ctype.h como isalpha, isdigit, etc.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com