Мне надо перевести фрагмент кода с C++ на Delphi. В частности эту функцию:
static int sizeofints( const int num_of_ints, unsigned int sizes[]) {
int i, num;
unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp;
num_of_bytes = 1;
bytes[0] = 1;
num_of_bits = 0;
for (i=0; i < num_of_ints; i++) {
tmp = 0;
for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) {
tmp = bytes[bytecnt] * sizes[i] + tmp;
bytes[bytecnt] = tmp & 0xff;
tmp >>= 8;
}
while (tmp != 0) {
bytes[bytecnt++] = tmp & 0xff;
tmp >>= 8;
}
num_of_bytes = bytecnt;
}
num = 1;
num_of_bytes--;
while (bytes[num_of_bytes] >= num) {
num_of_bits++;
num *= 2;
}
return num_of_bits + num_of_bytes * 8;
}
Тут какое-то вычисление, сколько бит понадобится на хранение нескольких чисел указанного максимального размера. И меня смутило, что переменная bytecnt, которая вначале служит счётчиком цикла, используется также после цикла. Это нормально в C++?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.