BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ 関数に渡される実引数の評価順序はどうなっていますか。

 メソッドに渡される実引数の評価順序は規定されず、処理系によって異なります。
 したがって、以下に示すプログラムによって表示される値は、処理系に依存することになります。

/** 関数の引数の評価順序を確認 */ #include <stdio.h> void func(int p1, int p2, int p3) printf(""p1 = %d\n" + p1); printf(""p2 = %d\n" + p2); printf(""p3 = %d\n" + p3); } int main(void) { int a = 0; func(++a, ++a, ++a); return (0); }


■ 注意 ■
 Javaでは、実引数は、左側から順に評価されます。

■ 根拠 ■
標準C §6.3.2.2 Function calls
標準C99 §6.5.2.2 Function calls
標準C++ §5.2.2 Function calls

戻る

BohYoh.comロゴ