SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Apokalyptica79 en Viernes 29 de Junio de 2007, 19:57

Título: Ejercicio En C
Publicado por: Apokalyptica79 en Viernes 29 de Junio de 2007, 19:57
Hola, hay un ejercicio en el cual me da la siguiente codificación:
Citar
/* Aplicacion de operadores */
#include <stdio.h>
main()
{
 int i = 15, j, k, l;

 j = (15 > i--) > (14 < ++i);
 printf( "El valor de j es: %d \n", j );

 k = ! ( 'b' != 'd' ) > ( !i - 1 );
 printf( "El valor de k es: %d \n", k );

 l = ( ! (34 > (70 % 2)) || 0 );
 printf( "El valor de 1 es: %d \n", l );
}
Este programa genera el siguiente resultado:
Citar
El valor de j es:0
El valor de k es:1
El valor de l es: 0
Tengo que averiguar que son esos valores que imprime, o sea que hace el programa.
Mis dudas son las siguientes:
1) Cuando pone:
j = (15 > i--) > (14 < ++i)
Es lo mismo que poner:
j = (15 > 15) > (14 < 16)
2) Cuando pone:
k = ! ( 'b' != 'd' ) > ( !i - 1 )
El ! delante de ( 'b' != 'd' ) significa que está negando que 'b' sea
distinto de 'd',
el ! delante de i significa que i en este caso no vale 15?
Gracias y perdón.  :(
Título: Re: Ejercicio En C
Publicado por: LeGatoRojo en Viernes 29 de Junio de 2007, 22:56
en el punto 1, si es lo mismo, y bueno en el punto dos, buneo ! es tan solo una negacion

por ejemplo cuando usas
Código: Text
  1. ( 'b' != 'd' )
  2.  
este te regresa 1 por que afirmativamente, 'b' != 'd', pero bueno si niegas el uno, pues tan solo te devuelve cero,

en el caso de
Código: Text
  1.  !i
  2.  
bueno como i vale 15 es decir tiene un valor devuelve 1, pero como lo niegas finalmente es cero.
Título: Re: Ejercicio En C
Publicado por: Apokalyptica79 en Sábado 30 de Junio de 2007, 04:21
Hola Darktigerhell, muchas gracias, ahora entiendo que el 1 en este caso se refiere a verdadero y el 0 a falso, eso ya lo sabía porque lo habia leido antes pero no pensé que se aplicaba ese concepto en este ejemplo.
Nuevamente, muchas gracias.  :D