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

Duda operadores comparacion

Estas en el tema de Duda operadores comparacion en el foro de C/C++ en Foros del Web. x = 10; y = 20; z = 30 (x <= z) || (z <= y) (false) Mal: x es menor que z, luego x<=z ...
  #1 (permalink)  
Antiguo 27/01/2013, 09:37
Avatar de boronix  
Fecha de Ingreso: enero-2013
Ubicación: España
Mensajes: 17
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta Duda operadores comparacion

x = 10; y = 20; z = 30

(x <= z) || (z <= y) (false)

Mal: x es menor que z, luego x<=z es true, no necesitamos proseguir, ya que en una expresión OR, si uno de los operandos es true, el resultado es true.

Yo lo llame false porque entiendo que se tiene que cumplir que x es menor o igual que z y en este caso, solo se cumple que es menor. La segunda parte esta claro que es false, entonces, porque es true en la primera?

Muchas gracias
  #2 (permalink)  
Antiguo 27/01/2013, 09:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Duda operadores comparacion

Cita:
porque es true en la primera?
la verdad no te entiendo, vos mismo te estas dando la respuesta. Es true porque x es menor que z.

Tal vez te confundis porque pensas que x tiene que ser menor y ademas igual q z. PEro la forma de leer el "<=" es "menor o igual" y no "menor e igual"


Saludos
  #3 (permalink)  
Antiguo 27/01/2013, 14:59
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Duda operadores comparacion

La idea es:

Es X menor que Z?

- Sí, la condicion entera es cierta no necesitamos proseguir.
- No, comprobamos la segunda condicion.

Es una sentencia OR (o se cumple una o se cumple la otra). Si queremos que se cumpla las dos usaríamos un AND:

(x <= z) && (z <= y) (false)
  #4 (permalink)  
Antiguo 29/01/2013, 17:30
Avatar de ZeKi  
Fecha de Ingreso: noviembre-2012
Ubicación: Jaén
Mensajes: 61
Antigüedad: 11 años, 5 meses
Puntos: 6
Respuesta: Duda operadores comparacion

A ver, tu duda radica en que no sabes por qué la primera condición es verdadera cuando sólo cumple que es menor, verdad?

Pues es muy sencillo, compañero, un número o es menor que otro, o igual, o mayor, nunca se van a cumplir dos de éstas condiciones a la vez.
  #5 (permalink)  
Antiguo 30/01/2013, 16:36
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Duda operadores comparacion

Se cumple porque una de ellas es verdadera y para que el conjunto sea verdadero basta que uno sea verdadero.

Eso significa que >= es similar y una forma abreviada de escribir

x > y || x == y

lo que finalmente sería en ese caso y expandido

x < z || x == z || z < y || z == y

3 OR, por lo que con que alguna de estas expresiones sea cierta el conjunto es cierto.

Véase que por reglas de exclusión lógicas si fuera

(x <= z) && (z <= y)

la expresión expandida tendría obligatoriamente que tener paréntesis para que la prioridad se cumpla y sea un AND real entre dos subconjuntos de expresiones OR

(x < z || x == z) && ( z < y || z == y)

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 30/01/2013 a las 16:43
  #6 (permalink)  
Antiguo 31/01/2013, 07:25
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Duda operadores comparacion

Para el operador lógico or, basta que uno de los operandos sea verdadero para que todo sea verdadero y si ambos son falsos el resultado es falso.
Como (x<=z) con los valores que exhibes es verdadero, es más que suficiente para garantizar que el resultado de todo es verdadero, independiente del otro valor.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Etiquetas: comparacion, operadores
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 19:13.