Lo sé, Int32.MaxValue * Int32.MaxValue
dará un número mayor que Int32
; Pero, ¿esta afirmación no debería generar algún tipo de excepción?¿Por qué Int32.MaxValue * Int32.MaxValue == 1?
Me encontré con esto al hacer algo como IF (X * Y > Z)
donde todos son Int32
. X
y Y
son lo suficientemente grandes como para obtener un valor falso de X * Y
.
¿Por qué es así y cómo evitar esto? además de enviar todo al Int64
.
¿Es esto en un bloque 'unchecked'? – Skywalker
Ver http://stackoverflow.com/questions/2363838/when-must-we-use-checked-operator-in-c –