Обновление : Постер исправил свой вопрос.
1) Это вывод ожидается, потому что вы добавили 3 к int.MaxValue, вызывая переполнение. В .NET по умолчанию это допустимая операция в неконтролируемом коде, дающая обтекание отрицательных значений, но если вы добавите блок checked
вокруг кода, вместо этого будет OverflowException
.
2) Тип переменной, объявленной с var
, определяется во время компиляции, а не во время выполнения. Как правило, добавление двух Int32 дает Int32, а не UInt32, Int64 или что-то еще. Поэтому, хотя во время выполнения вы можете видеть, что результат слишком велик для Int32, он все равно должен возвращать Int32.
3) Он не преобразован в другой тип.