C 返回n==0?0:fib2(n,0,1)我能';我找不到?

C 返回n==0?0:fib2(n,0,1)我能';我找不到?,c,recursion,fibonacci,C,Recursion,Fibonacci,我试图用单递归编写斐波那契,我发现了这段代码。但我第一次看到这个 返回n==0?0:fib2(n,0,1) 代码。什么是”?“和”:“,我找不到关于它的任何信息。那就是如果??:是C语言中的三元运算符。它类似于if-else语句。声明 unsigned long fib(unsigned int n) { return n == 0 ? 0 : fib2(n, 0, 1); } unsigned long fib2(unsigned int n, unsigned long p0, uns

我试图用单递归编写斐波那契,我发现了这段代码。但我第一次看到这个

返回n==0?0:fib2(n,0,1)


代码。什么是
”?“
”:“
,我找不到关于它的任何信息。那就是如果?

?:
是C语言中的三元运算符。它类似于
if-else
语句。声明

unsigned long fib(unsigned int n)
{
  return n == 0 ? 0 : fib2(n, 0, 1);
}

unsigned long fib2(unsigned int n, unsigned long p0, unsigned long p1)
{
  return n == 1 ? p1 : fib2(n - 1, p1, p0 + p1);
}
如果
exp1
为真,则返回
exp2
,否则将返回
exp3
。相当于

 return exp1 ? exp2 : exp3;  

请不要以完全改变原文的方式修改问题。如果你想问别的问题,问一个新问题
if(exp1)  
    return exp2;  
else 
    return exp3;