我是编程的初学者,在学习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);
}
这是对的还是我误读了?
答案 0 :(得分:2)
? :
被称为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));
首先评估总和,然后返回结果。
答案 1 :(得分:0)
之前的回答已经回答了你的问题。我只是想注意一下:三元运算符可用于返回值
if(cond)
str = "foo";
else
str = "bar";
使用三元,你可以写:
str = cond ? "foo" : "bar";
答案 2 :(得分:0)
代码是正确的。 在这段代码中,他们使用了Linked List,Pointer,最重要的是他们使用了条件或三元运算符。
在函数fun(list_t * list)中,他们使用条件运算符。 语法:(Condition?true_value:false_value);
返回列表== NULL? 0:list-> value + fun(list-> next);
这里NULL表示条件,0表示真实部分,list-> value + fun(list-> next)表示false部分。 最后,真值或假值将存储在变量列表中并返回。
答案 3 :(得分:0)
他们使用了条件或三元运算符。
在函数 {
try
{
string temp = Path.Combine(Directory.GetCurrentDirectory(), @"..\Contents\text.json");
string Data = File.ReadAllText(temp);
}
catch
{
return null;
}
}
中,他们使用了条件运算符。
fun(list_t *list)
Syntax : (Condition? true_value: false_value);
此处return list == NULL ? 0 : list->value + fun(list->next);
代表要检查的条件,list==NULL
代表真实的部分,
0
代表虚假部分。
最后根据条件评估,true或false值将返回给调用函数。
如果list->value + fun(list->next)
为真
list==NULL
将被退回
如果它是假的,0
为假,则list==NULL
返回加号,它会递归调用
list->value
。