Foros del Web » Programación para mayores de 30 ;) » C/C++ »

significado de línea de código...

Estas en el tema de significado de línea de código... en el foro de C/C++ en Foros del Web. Hola, alguien sabe que significa esta línea de código en C?... ¿que para con la variable?, que se le asigna?.. o mejor dicho, como se ...
  #1 (permalink)  
Antiguo 05/10/2010, 15:19
 
Fecha de Ingreso: abril-2007
Mensajes: 4
Antigüedad: 17 años
Puntos: 0
significado de línea de código...

Hola, alguien sabe que significa esta línea de código en C?...
¿que para con la variable?, que se le asigna?.. o mejor dicho, como se puede interpretar esa línea?

iIndDevolucion = ( ihIndDevolucion != 0 ) ? 1 : 0;

Gracias y disculpen si es una bobada...
  #2 (permalink)  
Antiguo 05/10/2010, 15:32
Avatar de SDEK  
Fecha de Ingreso: diciembre-2009
Ubicación: MX
Mensajes: 156
Antigüedad: 14 años, 4 meses
Puntos: 8
Respuesta: significado de línea de código...

Eso es igual a esto:

Código C++:
Ver original
  1. if ( ihIndDevolucion != 0 ) //Si es distinto de 0
  2. {
  3. return 1;                          //Devuelve 1
  4. }
  5. else
  6. {
  7. return 0;                           //Devuelve 0
  8. }


iIndDevolucion = ( ihIndDevolucion != 0 ) ? 1 : 0;

Saludos,
__________________
Tecnologías de la Información
Karel Priego
| @karelpriego
  #3 (permalink)  
Antiguo 05/10/2010, 15:35
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: significado de línea de código...

El operador ?: es como es un if rapido.

Lo que esta antes del signo de pregunta es la condicion y lo que esta entre los dos puntos es el valor si es true o si es false respectivamente.

Entonces tu sentencia se fija si ihIndDevolucion es distinto de cero.
En caso de ser True devuelve 1.
En caso de ser False devuelve 0.

Basicamente lo que haces es: Si la variable ihIndDevolucion es cero, la deja en cero, en caso contrario le asigna uno.
  #4 (permalink)  
Antiguo 05/10/2010, 15:47
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: significado de línea de código...

Código:
iIndDevolucion = !!ihIndDevolucion;
Hace exactamente lo mismo.
  #5 (permalink)  
Antiguo 05/10/2010, 16:17
 
Fecha de Ingreso: abril-2007
Mensajes: 4
Antigüedad: 17 años
Puntos: 0
Respuesta: significado de línea de código...

Excelente maestros me quedó clarito gracias...

¿algún manual de C recomendable?
  #6 (permalink)  
Antiguo 05/10/2010, 17:23
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: significado de línea de código...

razpeitia, creo que esta en un error

!true = !false = true, asi que regresa al valor original, cierto amigo...?

que si aria extamente lo mismo seria

var = !varBool;
  #7 (permalink)  
Antiguo 05/10/2010, 18:33
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: significado de línea de código...

Código C:
Ver original
  1. int x = 10;
  2. printf("%d\n", !x); //(Si x es cero (falso) lo transformara a 1 (verdadero)) Y Si es 1 (verdadero) lo transformara a 0 (falso)
  3. printf("%d\n", !!x); //Puedes comprobarlo con tu compilador favorito ;)

Puedes comprobarlo por ti mismo
  #8 (permalink)  
Antiguo 05/10/2010, 22:10
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: significado de línea de código...

lo que me tratas de decir es k
!x = !!x?
  #9 (permalink)  
Antiguo 05/10/2010, 23:41
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: significado de línea de código...

Lo que trato de decirte es que:
!x es lo mismo a x == 0 ? 1 : 0
!!x es lo mismo a x == 0 ? 0 : 1
  #10 (permalink)  
Antiguo 06/10/2010, 05:24
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: significado de línea de código...

Adicional a lo ya dicho:

Todas las comparaciones tienen un valor aritmetico. El valor solo puede ser 0 o 1, dependiendo si es falso o verdadero el valor de verdad.

De este modo, si se requiere "retornar" un valor 1 o 0 es suficiente la comparación, o sea:

valor = (x == 0) ? 1 : 0;

podria, tambien, hacerse mas corto asi:

valor = (x == 0);

y

valor = (x == 0) ? 0 : 1;

podria hacerse:

valor = !( x == 0 );

o bien

valor = ( x != 0 );

Desde el punto de vista de mantencion del codigo, a veces conviene ser mas explicito que economico en lo que se escribe, de modo que es posible que todo lo discutido en cuanto a equivalencias, hagan el programa mas corto, pero mas dificil de entender / mantener.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:54.