это из-за написанного вами цикла for
for(i<=5 && i>=-1;++i;i>0)
первый параметр цикла for выполняется один раз. он не проверяет, является ли условие истинным или нет, и не контролирует выполнение цикла. даже если выражение оценивается как 0, цикл начинает выполняться. вторая часть выполняется каждый раз, когда начинается цикл, и это условие прерывания цикла. то есть, если это выражение возвращает 0, оно ломается.
третий раздел выполняется каждый раз, опять же, это не влияет на выполнение цикла.
ЗАМЕТЬ, давайте проанализируем ваш кодя инициализируется до 0, прежде чем войти в цикл. инициализатор цикла for выполняет проверку условия, i<=5 && i>=-1
, но не изменяет значение i. секция условия делает приращение к переменной i, что происходит каждый раз, когда она входит в цикл. таким образом, значение изменяется от 0,1,2, .. 127, -128, -127 ...- 1 (так как это знаковый символ , который находится в диапазоне от -128 до 127), а затем достигает 0,что означает ложь. когда значение равно 0, цикл for прерывается. Таким образом, выход вы получили. 3-й раздел снова является условием, которое не обновляет значение.
Вы можете проверить синтаксис цикла и ожидаемый результат.