【发布时间】:2021-03-04 15:07:39
【问题描述】:
node1 和 node2 是链表的节点。
Node* node1, Node* node2;
int carry = 0;
int sum;
sum = carry + (node1 ? node1->data : 0) + (node2 ? node2->data : 0);
因为x ? y : z 的作用类似于if(x) y else z
我试过了
if (node1 && node2)
sum = carry + node1->data + node2->data;
else if(node1 && !node2)
sum = carry + node1->data;
else if(!node1 && node2)
sum = carry + node2->data;
else if(!node1 && !node2)
sum = carry;
我们可以像这样使用布尔值一样使用节点吗?如果没有,不使用问号怎么写这个语句?
【问题讨论】:
-
auto data = [](Node* p, int default_value) { if (p) return p->data; return default_value; };然后使用int sum = carry + data(node1, 0) + data(node2, 0);
标签: c++ if-statement conditional-operator