Смысл явного приведения в том, чтобы сказать: «Я беру на себя ответственность за проблему, просто сделайте это».
В вашем тривиальном случае компилятору было бы легко выяснить, что значение не помещается в Int32, и, таким образом, вывести предупреждение.
Однако, что по этому поводу:
Int64 x = CallSomeMethod();
Int32 y = (Int32)x;
Как он может предупредить вас об этом? Если это:
- попытаться выяснить, какой диапазон может вернуть значение из CallSomeMethod?
- всегда предупреждать? (тогда какой будет смысл?)
Лучшее, на что вы можете здесь надеяться, - это проверка во время выполнения, или что-то подобное, компилятор не может предотвратить вас от всего, что может пойти не так.