"return list == NULL ? 0 : list->value + fun(list->next)" 是做什么的?

what does "return list == NULL ? 0 : list->value + fun(list->next)" do?

我是编程初学者,在学习 C 中的列表时,我发现了这个函数,但不知道它的作用。有人可以解释一下吗。

int fun(list_t *list) {
    return list == NULL ? 0 : list->value + fun(list->next);
}

我认为

的 if else 语句更短
if (list == NULL)
     return 0;
else {
     return list->value;
     fun(list->next);
}

这是对的还是我看错了?

? : 称为 Conditional (ternary) operator:

return list == NULL ? 0 : list->value + fun(list->next);

等同于:

if(list == NULL) {
    return 0;
}
else {
    return list->value + fun(list->next);
}

或者更明确地说:

return (list->value + fun(list->next));

先求和,然后返回结果。

前面的回答已经回答了你的问题。我只想指出一个区别:三元运算符可用于 return 一个值

if(cond)
   str = "foo";
else 
   str = "bar";

使用三进制,你可以这样写:

str = cond ? "foo" : "bar";

代码正确。 在这段代码中,他们使用了链表、指针,最重要的是他们使用了条件运算符或三元运算符。

在函数 fun(list_t *list) 中,他们使用了条件运算符。 语法:(条件?true_value:false_value);

return 列表 == NULL ? 0 : list->value + fun(list->next);

这里NULL代表条件,0代表真部分,list->value + fun(list->next)代表假部分。 最后true或false值将存储在变量列表中,它是returned.

他们使用了条件运算符或三元运算符。

在函数 fun(list_t *list) 中,他们使用了条件运算符。

Syntax : (Condition? true_value: false_value);

return list == NULL ? 0 : list->value + fun(list->next);

这里list==NULL代表要检查的条件,0代表真实的部分,

list->value + fun(list->next)代表虚假部分

最后,根据条件评估,真值或假值将 returned 到调用函数。

如果 list==NULL 为真

0 将 returned

如果它是假的,即 list==NULL 是假的,那么 list->value 是 return 加上它会递归调用

fun(list->next).