1
( s1[i] = s2[i] ) != '\0'

不等式は または でチェックs2[i]します'\0's1[i]?

4

5 に答える 5

1

演算子の優先順位と評価の順序によって、式の評価順序が決まります。

演算子の優先順位は、式を解釈する順序、つまり、どの演算子がどのオペランドに属するかを示します。これは数学的な優先順位に似ています。たとえば、はよりも優先順位が高い1+1*2ため、4 ではなく 3です。その優先規則により、式は として評価されます。*+1+(1*2)

評価の順序は、優先順位とは別のものです。サブ式が評価される順序を示します。別の数学の例: これは常に 3 であることがわかって(1*1) + (1+1)います。しかし、それを計算するとき、最初に左括弧から始めるか、右括弧から始めるかを決めることができます。演算子の優先順位によって、どちらから開始するかが決まるわけではありません。よりも*優先順位が高くても+、最初に右側の式の計算を開始でき、結果には影響しません。

しかし、プログラミングでは、この評価の順序が重要になることがよくあります。この順序を決定するのはコンパイラです。そして、物事を複雑にするために、どのように文書化することなく、ケースバイケースで好きなようにすることが許されています (「不特定の動作」)。


  • () 演算子は優先順位が最も高いため、( s1[i] = s2[i] )最初に評価されます。その中のすべてが部​​分式です。

  • () サブ式内では、[] 演算子が次に優先されるため、2 つの " s[i]" が次に評価されます。s[i]" " もサブ式であり、サブ式の評価順序が指定されていないため、コンパイラは のs1[i]前または後に自由に評価できることに注意してくださいs2[i]

    この特定のケースでは、どちらが最初に評価される可能性が高いかは重要ではありません。

  • () サブ式の内部では、= 演算子が次に来ます。オペランドの内容s2[i]が にコピーされs1[i]ます。

  • () 内のすべての式が評価され、結果が に格納されs1[i]ます。

  • 最後に、部分式からのこの結果は、式の残りの演算子の 1 つのオペランドです!=。もう 1 つのオペランドは文字リテラル'\0'です。

于 2013-06-28T12:55:08.440 に答える