【发布时间】:2017-05-03 19:07:27
【问题描述】:
为了清楚起见,我了解 for 循环的工作原理。但是,不同的语法给我带来了问题......让我举个例子:
我正在查找递归排序算法(插入排序)。代码是这样的:
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)...一样。 -
0为“假”,任何其他值为“真”。 -
我了解 for 循环的工作原理 - 如果你这样做了,你就不会问这个问题。当
i为零时为假,否则为真 -
@EdHeal 他的问题不直接处理循环......更多的是关于
i本身(没有任何明确条件)如何被解释为条件的语义。 -
当
i在for语句中时,请说明为什么它是间接的
标签: c loops sorting recursion insertion-sort