I know, Int32.MaxValue * Int32.MaxValue will yield a number larger than Int32; But, shouldn’t this statement raise some kind of an exception?
I ran across this when doing something like IF (X * Y > Z) where all are Int32. X and Y are sufficiently large enough, you get a bogus value from X * Y.
Why is this so and how to get around this? besides casting everything to Int64.
You have disabled the overflow checks in your project. With checked mode On it will throw an exception.