Я столкнулся со странной ошибкой при обновлении счетчика, который используется для вычисления переменной для оператора switch.
int iCount
был назначен ноль вне цикла, и это счетчик, используемый дляЦикл while.
Чтобы обновить счетчик внутри цикла, я написал iCount+= packedCount
, где в этом случае значение PackCount равно 7.В отладчике, однако, 0 + = packCount привел к пакету PackCount + 1, который был равен 8. Это привело к тому, что слот массива оставался незаполненным на протяжении всего цикла.
Когда я изменил строку на icount= packedCount+iCount
, собственнобыло возвращено значение.
Итак, это поведение уникально для C, поскольку я регулярно делаю это на Java без каких-либо странных эффектов.
EDIT - Добавлен фрагмент кода
#define SKIP 8
#define PACKED 7
int iCount;
iCount=0;
while (iCount < characters-1){
for (packedCount=iCount; packedCount< iCount+PACKED; packedCount++){
//ASCII compressor logic goes here
}
//iCount+= packedCount; //this produces 8 for 0+packedCount
//this works
iCount= iCount+packedCount; //skip the next byte in array, since it was already packed
}