Skip to content

Instantly share code, notes, and snippets.

@phaya phaya/ifcomma.c Secret
Created Oct 18, 2013

Embed
What would you like to do?
Otro bocado que ha surgido de dudas de clase. El siguiente programa pretende comprobar si m es igual a alguno de los números listados, y en caso que la condición sea verdadera imprimir m. Como podéis comprobar funciona, o ¿no? ¿en qué casos falla y por qué?
#include<stdio.h>
int main()
{
int m = 7;
if (m == 1, 3, 5, 7, 8, 10, 12) {
printf("m = %d\n", m);
}
}
@ArturoBlazquez

This comment has been minimized.

Copy link

commented Oct 22, 2013

Lo que está dentro del if equivale a escribir m==1, 1!=0, 3!=0, 5!=0, 7!=0, 8!=0, 10!=0, 12!=0
He estado probando y no se exactamente por qué, pero el if, al estar separada por comas, se evalúa como verdadero si la última condición es cierta, y se evalúa como falso si la última condición es falsa.

@phaya

This comment has been minimized.

Copy link
Owner Author

commented Oct 25, 2013

No es exactamente así como funciona. Hay que tener en cuenta que la , es un operador binario en C al igual por ejemplo, que la suma. Evalúa el primer operando, descartando el resultado, y luego evalúa el segundo operando devolviendo su valor. Por ejemplo, si tienes int i=1 y la siguiente sentencia a = (i++, 5), el resultado es que en a se guarda 5, e i pasa a valer 2 (nótese los paréntesis dado que la , tiene una precedencia menor que la asignación). Con esta información, ¿serías capaces de explicar que está pasando?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.