我从一个要求提供代码输出的网站上得到这个问题
void reverse(int i)
{
if (i > 5)
return ;
printf("%d ", i);
return reverse((i++, i));
}
int main(int argc, char *argv[]) {
reverse(1);
return 0;
}
输出为 1 2 3 4 5
但是 reverse
函数被调用递归地传递括号内的两个值。优先级和关联性如何在这里发挥作用?
最佳答案
(i++, i)
中的
,
是逗号运算符。它的操作数从左到右计算。它计算 i++
,i
的值递增,表达式 i++
的值被丢弃,然后递增的值传递给函数。因此,最终只有一个参数被传递给函数 reverse
。
关于c - 在单个参数函数中传递带括号的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41777606/