簡體   English   中英

如何在不使用“?”的情況下編寫“?:”語句 (問號)?

[英]How can I write the "?:" statements without using the '?' (question mark)?

node1 和 node2 是鏈表的節點。

Node* node1, Node* node2;
int carry = 0;
int sum;
sum = carry + (node1 ? node1->data : 0) + (node2 ? node2->data : 0);

由於x ? y : z 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;

我們可以像使用布爾值一樣使用節點嗎? 如果沒有,我如何在不使用問號的情況下編寫此語句?

那個? : ? :被稱為條件運算符(或在類 C 語言的上下文中有時稱為三元運算符)。 在 C++ x ? y : z x ? y : zif (x) y else 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM