条件付き(三項)演算子を評価する方法は? [閉鎖]

条件付き(三項)演算子を評価する方法は? [閉鎖]

すべての例で、それがどのように機能するかを見ました。

 condition?value = true:value = false

実際にどのように動作するかを確認できませんでした。この動作モードを使用すると、ほぼ明確に説明できます。

Short-circuit evaluation

 As logical expressions are evaluated left to right, they are tested
 for possible "short-circuit" evaluation using the following rules:

false && anything is short-circuit evaluated to false.
true || anything is short-circuit evaluated to true.

段落という用語は実際に何を意味しますか?

?:の左も同じ結論につながるか? && と || と同じです。これは右ですか?段落(失敗)なので:の右に移動した後は失敗しません。代わりに作業を完了してください。

段落という言葉をはっきりと理解できないので混乱しています。

私が知っているのはこれだけだ。

戻り値が0、true、またはyesの場合に機能します。

if true && then do this

左側の戻り値がゼロでなければ失敗します。

if false || then do this

左側の戻り値が 0 の場合は失敗します。

これらの理解に基づいて、もう一度質問をします。

条件付き(三項)演算子は同じ方法で評価し、同じ方法で動作しますか?

問題を証明するために分解する必要がありました。

false ? anything is short-circuit evaluated to false.
true : anything is short-circuit evaluated to true.

と解釈されるようです。

 !true ? then fail 
  true : then fail 

または

  true ? then no failure 
  false : then no failure 

? の一番左から終わります。

 hypothesis ? conclusion true : conclusion false

論理演算子も同様です。

 hypothesis &&  conclusion true operation preformed

 hypothesis || conclusion false operation preformed

すべて同じアプローチを使用していますか?

2つの論理演算子は1つの条件付き(三項)演算子として扱われます。

3つすべて論理演算子ですか?

私は問題のすべての真実を得るために私が知っているすべてのプログラミング言語でタグ付けしました。

これについて誰も混同しないことを祈ります。はい、もしそうなら、これは私が混乱している可能性があります。

ベストアンサー1

「段落」とは、次のような表現がある場合を意味します。

( something evaluating to false) && (something else)

何も実行しません。常にfalseなので(something else)すぐに終了します。false && anything

同様に:

(something evaluating to true ) || (something else)

(something else)条件がすでに真であるため、評価する必要はありません。

三項演算子の場合、これはブール式にすぎませA ? b : cA。その値に基づいてb評価されcます(truebの場合はそうでない場合)。したがって、ここではand演算子のように「段落」は発生しません。どちらも同時に実行されることはなく、常に両方のいずれかです。Ac&&||bc

三項をif-else文で考えると役に立ちます。上記の例では、Ais条件式、bisthen句、ciselse句があります。唯一の違いは、三項式全体が真であるか偽であるかに基づいてbor値を生成することです。cA

C言語の例です。数字がN偶数であるか奇数であるかを示す文字列が欲しいとします。

char *result = ((N % 2) == 0) ? "even" : "odd";

以下は、「段落」を介してこれを行う1つの方法です(非常に良いスタイルではありませんが、概念を示しています)。

char *result = "even";
((N % 2) == 0) || (result = "odd");

最後の例でN偶数の場合、「奇数」の割り当ては短絡されます。式が評価されておらず、次の場合、結果はすでにtrueとして知られているため、割り当ては発生しません。到着すると、||結果は「均等」のままになります。

おすすめ記事