Просто, чтобы быть ясным, я понимаю, как работают петли. Однако различный синтаксис вызывает у меня проблемы ... Позвольте привести пример:Озабочен о петлях в C
Я искал рекурсивный алгоритм сортировки (сортировка вставки). Код выглядел так:
void insertion_recursive(int array[],int size){
int i;
if (size<=1) return;
insertion_recursive(array,size-1);
for(i=size-1;i;i--)
if(array[i]<array[i-1])
swap(&array[i],&array[i-1]);
else
break;
}
Я понимаю, как работает код, но условие цикла сбивает с толку меня:
for(i=size-1 ; i ; i--)
Что это значит? Просто оставить «i» без указания условия?
Но * это * есть состояние! Также как 'if (i) ...' делает. – usr2564301
'0' является« ложным », любое другое значение« true ». –
_I понимаю, как работает цикл. - Если бы вы это сделали, вы бы не задали вопрос. Когда 'i' равно нулю, это неверно, иначе оно истинно. –