У вас есть приоритет оператора .
Релатриональные операторы имеют высокий приоритет над троичным (условным), следовательно, ваше условие цикла обрабатывается как
for(i = 0; (i < ((end_jump % 3) == 0)) ? 4 : 10; i++)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
, где результат тройного равен либо 4
, либо * 1009.* оба они являются «правдивыми», вызывая бесконечный цикл.
Вам нужна дополнительная пара скобок.
for(i = 0; i < (((end_jump % 3) == 0) ? 4 : 10); i++){
/* do something with */
}
должна выполнить работу.