すべての例で、それがどのように機能するかを見ました。
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 : c
んA
。その値に基づいてb
評価されc
ます(trueb
の場合はそうでない場合)。したがって、ここではand演算子のように「段落」は発生しません。どちらも同時に実行されることはなく、常に両方のいずれかです。A
c
&&
||
b
c
三項をif-else文で考えると役に立ちます。上記の例では、A
is条件式、b
isthen
句、c
iselse
句があります。唯一の違いは、三項式全体が真であるか偽であるかに基づいてb
or値を生成することです。c
A
C言語の例です。数字がN
偶数であるか奇数であるかを示す文字列が欲しいとします。
char *result = ((N % 2) == 0) ? "even" : "odd";
以下は、「段落」を介してこれを行う1つの方法です(非常に良いスタイルではありませんが、概念を示しています)。
char *result = "even";
((N % 2) == 0) || (result = "odd");
最後の例でN
偶数の場合、「奇数」の割り当ては短絡されます。式が評価されておらず、次の場合、結果はすでにtrueとして知られているため、割り当ては発生しません。到着すると、||
結果は「均等」のままになります。