Al comparar con un mínimo o un máximo de dos números/funciones, ¿C-cortocircuita si el caso es verdadero para el primero e implicaría verdad para el segundo? Ejemplos específicos de estos casos son¿Tiene comparación con Math.Min o Math.Max short-circuit?
if(x < Math.Max(y, z()))
y
if(x > Math.Min(y, z()))
Desde Math.Max(y, z())
devolverá un valor al menos tan grande como y, si x < y entonces no hay necesidad de evaluar z(), que podría tomar un tiempo Situación similar con Math.Min
.
que dan cuenta de que estos podrían ser reescritos tanto en la línea de
if(x < y || x < z())
con el fin de cortocircuito, pero yo creo que es más claro lo que la comparación es sin volver a escribir. ¿Este cortocircuito?
Supongamos que llama a 'if (x> XYZ (y, z()))' ¿Cómo puede el compilador conocer el resultado de XYZ? Max, Min, Average o cualquier otra cosa? –
@ L.B Gran punto, no había considerado esto de esa manera. – yoozer8
Además, la expresión "cortocircuito" puede no ser equivalente, dependiendo de cómo 'Min' y' Max' manejan NaN. – dan04