В чем разница между
int size = (int)((length * 200L) / 100L); // (1)
и
int size = length << 1; // (2)
(длина - int в обоих случаях)
Я предполагаю, что оба фрагмента кода хотят удвоить параметр длины.
У меня возникнет соблазн использовать (2)... так ли какие-либо преимущества для использования (1)? Я смотрел на случаи краев, когда происходит переполнение, и обе версии имеют одинаковое поведение.
Скажите, пожалуйста, что мне не хватает.