sentencia - Operador de coma en condición de bucle en C
sentencia if en c++ (5)
En tema
El operador de coma siempre producirá el último valor en la lista separada por comas.
Básicamente, es un operador binario que evalúa el valor de la mano izquierda pero lo descarta, luego evalúa el valor de la mano derecha y lo devuelve.
Si encadena varios de estos, finalmente obtendrán el último valor de la cadena.
Según el comentario de anatolyg, esto es útil si desea evaluar el valor de la mano izquierda antes del valor de la mano derecha (si la evaluación de la mano izquierda tiene un efecto secundario deseable).
Por ejemplo, i < (x++, x/2)
sería una forma sensata de usar ese operador porque está afectando el valor de la mano derecha con las repercusiones de la evaluación del valor de la mano izquierda.
http://en.wikipedia.org/wiki/Comma_operator
Nota al margen: ¿alguna vez escuchaste de este curioso operador?
int x = 100;
while(x --> 0) {
// do stuff with x
}
Es solo otra forma de escribir x-- > 0
.
#include<stdio.h>
main()
{
int i;
for(i=0;i<0,5;i++)
printf("%d/n",i);
}
Solo quiero la explicación de "i <0,5" en la condición de bucle for.
Incluso si lo hago "i> 0,5", obtenemos la misma salida.
¿Puede alguien explicarme cómo funciona este tipo de condición? (Condiciones con el operador de coma, ya busqué en http://en.wikipedia.org/wiki/Comma_operator pero ninguna ayuda)
El operador de coma está destinado a los casos en que el primer operando tiene algunos efectos secundarios. Es solo un modismo, destinado a hacer que tu código sea más legible. No tiene efecto en la evaluación del condicional.
Por ejemplo,
for (i = 0; i<(i++, 5); i++) {
// something
}
incrementará i
, y luego verifica si i<5
.
El operador de coma evalúa i<0
O i>0
y lo ignora. Por lo tanto, siempre es el 5
que está presente en la condición.
Entonces es equivalente a:
for(i=0;5;i++)
El operador de coma se realiza en la inicialización y en la parte de incremento, para hacer algo como for(i=0,j=20;i<j;i++,j--)
, si lo hace en la parte de comparación, evaluará El último (como ya fue respondido antes).
i<0,5
siempre se evaluará como 5
, ya que siempre se devolverá la expresión correcta para ex1,ex2
.