2016-05-26 10 views
-3
  • if (i>=8 || i<0)
  • if(!((i>=0) && (i<8)))
  • 以下の2つのC文は同じですか?

      上記の文は同じですか?そうでない場合は、 iのどの値が異なるかによって異なります。

      ありがとうございます。

      EDIT 1:0-7の範囲外のiの値をすべてキャッチすることですが、どちらも同じタスクを実行しますか?

    +2

    はい結果は同じになります。コンパイラに依存して、他のものより速く実行されるかもしれません。 – atturri

    +0

    さて、「1」と言うのは、「2」より速いかもしれませんか? – Coder

    +0

    良い最適化コンパイラは、両方に対して全く同じコードを生成します。 – user3386109

    答えて

    4

    これらは同じです。デ・モルガンの法則によって、異論の否定は否定の結びつきである。

    So(Aではない)または(Bでない)はnot(AおよびB)と同じです。あなたがAが私であると言うならば、<とBはi> = 0です。答えがあります。

    0

    この場合は同じですが、最初のステートメントは最初の部分だけを評価するかもしれないので、将来的にスワップをしていることを知っていることを確認してください。

    +3

    2番目のステートメントも、最初の部分だけを評価することがあります。 –

    +0

    @ GauravSehgalいいえ、論理ANDは両方を実行します。 – Coder

    +1

    @コーダー最初の部分が偽であっても? –

    関連する問題