【发布时间】:2015-09-08 20:11:09
【问题描述】:
在上面的代码块中,我试图了解return reverse((i++, i)) 行是如何工作的。
#include <stdio.h>
void reverse(int i);
int main()
{
reverse(1);
}
void reverse(int i)
{
if (i > 5)
return ;
printf("%d ", i);
// return reverse(i++); -- stack overflow
return reverse((i++, i));
}
我还发现了下面的一段代码,它的工作原理类似。
#include <stdio.h>
int main()
{
int y = 1, x = 0;
int l = (y++, x++) ? y : x;
printf("%d\n", l);
}
如果问题是非常基本的问题,我很抱歉。我觉得很难理解。如果有人能解释一下,那会很有帮助。
【问题讨论】:
-
阅读the comma operator。顺便说一句,
reverse((i++, i))表达式实际上与reverse(++i)相同。 -
感谢@JoachimPileborg
标签: c function recursion comma-operator