printBackward递归在使用operator ++时不会打印数组的第一个元素

时间:2014-03-25 00:22:30

标签: c arrays recursion

我想向后打印一个整数数组并检测到当使用++而不是“startPos + 1”时,结果会丢失数组的第一个元素。我调试了解问题,但递归工作很奇怪。你能解释一下问题是什么吗?非常感谢你。

#include <stdio.h>
#define SIZE 10

void printBackward(const int[], const int size, int startPosition);

int main(void)
{
    const int a[SIZE] = {1,3,5,7,9,10,13,15,17,19};
    printBackward(a,SIZE,0);
    puts("");
}
void printBackward(const int a[SIZE], const int size, int startPos)
{
    if(startPos < size)
    {
        printBackward(a,size,++startPos); // work wrongly with ++startPos
                //printBackward(a,size,startPos + 1); // work properly
        printf_s("%4d",a[startPos]);
    }
}

1 个答案:

答案 0 :(得分:3)

startPos + 1传递给该函数不会更改startPos的值。但是,++startPos实际上会增加startPos的值。这两者不可互换。