Ключ, как уже упоминалось, необходимо преобразовать одно из значений в long
, чтобы иметь возможность сохранить правильное значение, так как в противном случае результирующее значение уже повреждено, прежде чем оно будет присвоено long
. Я хотел бы предложить, чтобы вы использовали MaxValue
в этих числовых c типах, чтобы сделать память вычислений удобной, если вы будете использовать ее для расчетов. int
занимает 32 бита, а long
- 64 бита. Если результат вычисления все еще равен int
, тогда вы можете сэкономить 32 бита, пока он вам действительно не понадобится. В вашем примере вы можете сделать
if (int.MaxValue - 5) < intTemp ) // it means the value will go above int range if add 5
{
// Make conversion to target type before the operation
}else{
// the value will still be in int range
}
Вы можете использовать соответствующий тип хранения для результата. Это может стать весьма эффективным с точки зрения памяти, если вы сохраняете большое количество результатов, а затем используете их для дальнейших вычислений. Надеюсь, это поможет.