C++相談室 part76
■ このスレッドは過去ログ倉庫に格納されています
003633
2009/12/18(金) 19:54:40残念ながら
初級C言語Q&A(7)
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
> Q 【評価順序】
> 評価の順序が不定である、というのはどういうことか。
> A
> a = foo() + bar(); のようなコードに対して、 foo と bar のどちらが先に
> 呼ばれるか決まっていない、ということです。
> --------------------------------------------------------------------------------
>
> Q 【優先順序】
> 評価と優先順序とは何が違うのか。
> A
> 優先順序というのは、異なる演算子が式の中で組み合わせられた場合に、
> どの結合を優先的に行うかを決めた規則です。算数で、掛け算は足し算よりも先に計算する
> 、という規則があるのと同じです。
> しかし、優先順序に関らず、それぞれの項の評価順序は不定のままです。
> 例えば、次の式は、どのような順序で関数が 呼ばれるか分かりません。
> これで言えるのは、 f2() を呼び出して得られた値と f3() を呼び出して得られた値を
> まず掛け算し、その結果と f1() を呼び出して得られた値を加算する、
> ということだけです。最後に足し算が行われるにもかかわらず、
> f1() が真っ先に呼び出されて、掛け算が終わるまで
> その値が保存されているかもしれません。
>
> i = f1() + f2() * f3();
■ このスレッドは過去ログ倉庫に格納されています