検索

Google
Web www.icefree.org

RSS of recent changes

 

Cでの演算子の評価順序

2017-06-20 (火) 23:23:54 (2991d)

 VC++6.0のマニュアルを元にしています。基本的にANSI C 仕様です。
 ANSI C よりも前のコンパイラでは、後置の ++ -- と typecasts が、前置の ++ -- と同じレベルです。ただし、現実には差がでることはないでしょう。

シンボル結合規則
[] () . -> ++ --(式)左から右
++ -- sizeof & * + - ~ ! (単項)右から左
typecasts (単項)右から左
* / % (二項演算)左から右
+ - (二項演算)左から右
<< >>左から右
< > <= >=左から右
== !=左から右
& (ビット演算)左から右
^左から右
|左から右
&&左から右
||左から右
?:右から左
= *= /= %= += -= <<= >>= &= ^= |=右から左
, (順次評価)左から右

&& ||
 評価は左から右に行われる。
 左側オペランドで全体の評価が決定すれば、右側オペランドは評価されない。
 ,
 順次評価され、すべてのオペランドが評価される。

関数
 関数の引数は、呼び出し前に完全に評価される。ただし、その順序は保証されない。

条件演算子
 最初のオペランドが最初に評価される。

初期化式、式ステートメント、while, do, for, return, if, switch のステートメント
 完全に評価される。