Considere el siguiente fragmento de código:¿Uso válido del operador condicional?
int i, k, m;
k = 12;
m = 34;
for (i = 0; i < 2; i++) ((i & 1) ? k : m) = 99 - i;
printf("k: %ld m: %ld\n\n", k, m);
En este tonto ejemplo, la expresión operador condicional es un atajo para:
if (i & 1) k = 99 - i; else m = 99 - i;
Mi compilador no se queja y ejecución de esta pieza de código da salida esperada
k: 98 m: 99
Mi pregunta, sin embargo, es si este es código válido de acuerdo con el estándar C? Nunca había visto algo así como antes.
Si se compila y ejecuta como se esperaba, entonces lo más probable es válido. Sin embargo, debería preguntarse si desea mantener un código como ese, especialmente si no se toca durante algunos años y tiene que descifrar lo que hace cuando regresa 5 años en el futuro. –