C++ 我怎样才能写“我”呢&引用;不使用';的语句';(问号)?

C++ 我怎样才能写“我”呢&引用;不使用';的语句';(问号)?,c++,if-statement,conditional-operator,C++,If Statement,Conditional Operator,节点1和节点2是链表的节点 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 我试过了 我们能像这样使用布尔节点吗?如果没有,我如何在不使用问号的情况下编写此语句被称为(或者在类C语言的上下文中有时称为三元运算符)。在C++ >代码> X中

节点1和节点2是链表的节点

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
我试过了


我们能像这样使用布尔节点吗?如果没有,我如何在不使用问号的情况下编写此语句被称为(或者在类C语言的上下文中有时称为三元运算符)。在C++ >代码> X中?y:z的工作原理与
if(x)y else z
的工作原理完全相同,只是
if else
块不是表达式,也不返回值。因此,如果您可以使用
node?
,那么您可以使用
if(node)
,任何数值表达式都可以转换为布尔表达式

然而,实际上你不需要组合2个三元表达式,需要如此多的if块。就像计算三元表达式一样

sum = carry
if (node1)
    sum += node1->data;
if (node2)
    sum += node2->data;

实际上它是条件运算符。三元算符是任何一个取3个操作数的操作符,巧合的是C++只有一种,但原则上,它也可以不象IF那样“精确”,因为它计算第二和第三算子的公共类型,但这是一种简化,在这方面可能是可以的。context@idclev463035818为了更卖弄学问,当然,它被许多人“称为”三元运算符是真的。@aschepler哈哈,我也有同样的想法,但挑剔我自己的挑剔似乎太可悲了;)。我想加上“口语”,那么我对它的例子就没问题了,
if…else
?:不同:给定
struct Blargh{Blargh(intx){std::cout
auto data=[](Node*p,int default_值){if(p)return p->data;return default_值;};
然后使用
int sum=carry+data(node1,0)+data(node2,0);
sum = carry
if (node1)
    sum += node1->data;
if (node2)
    sum += node2->data;