検索

ホームページ  >  に質問  >  本文

JavaScript の論理演算において、--c と c-- に関する小さな質問です。

ハン先生はこう言いました:

<script type=text/javascript>

var a = 3;

var b = 4;

## var c = 1;

if ( a < b && --c && a)

{

window.alert("OK")

}

window.alert(c) // c = 0

window.alert(a) // a =3

「--c」を変更した場合このとき、c の値も 0 になります。a の値が 4 になるのはなぜですか?

先生方全員に答えていただければ幸いです。ありがとうございます!

正歌正歌2482日前1743

全員に返信(5)返信します

  • 一切近乎完美

    一切近乎完美2018-03-28 15:24:52

    --c が最初に計算され、次に c に割り当てられます。つまり、最初に殺し、後で報告します。皇帝はまだ知らず、まだ死んでいないと考えているため、c は元の c のままです。報告して初めて自分がすでに死んでいることを知り、この時点でcが1減りました。

    そして、c--は減算後のcに割り当てられます。このとき、cは1つ減っていました。つまり、皇帝が個人的に処刑を監督したことになります。


    返事
    1
  •  

     2018-03-27 10:57:45

    --c の場合

    a < b true

    --c c は最初に c=0 false (0 は false、0 以外は true)

    a<b&&--c false の場合、&& がトリガーされます "Short回路」は実行されません ++a

    all c=0, a=3

    for c--

    a < b true

    c-- cは最初にtrueとfalseを判定し、それからそれ自体をデクリメントします、c=1すべての判断が真であるため、 c はデクリメントします

    a

    したがって、c=0、a=4

    返事
    1
  • 正歌

    ありがとう、分かりました。

    正歌 · 2018-03-27 11:08:21
  • 一生何求

    一生何求2018-03-26 21:13:25

    --C++の場合、式の左辺はfalseで、右辺の++aは演算を実行しないため、aの値は3のままです

    C++の場合、式の左辺はtrue、したがって、右辺の ++a はまだ演算を実行する必要があるため、a の値は 4 になります

    返事
    2
  • 正歌

    正歌2018-03-26 19:48:14

    <script type=text/javascript>

    var a = 3;

    var b = 4;

    var c = 1;

    if ( a < b && c-- && ++a);/ /このとき、c の値も 0 であり、これも false であるはずです。++a は計算されないはずなので、a の値は 3 のままであるはずです。なぜ計算されるのでしょうか。

    {

    window.alert("OK")

    }

    window.alert(c) // c = 0

    window.alert(a) // a =3


    返事
    0
  • キャンセル返事