関数の引数における評価順序
Posted: 2014年7月14日(月) 23:53
C言語で次のようなプログラムを書いた場合、Cでは関数の引数の評価順序が規定されていないので、
出力が一意に決まらないと思います。
[プログラム]
a = 1;
printf("a = %d : a = %d", a++, a++);
私が考えた限り、第1引数から評価される場合(出力結果 a = 1 : a = 2)と第2引数から評価される場合(出力結果 a = 2 : a = 1)とで2パターンが考えられると思うのですが、その他のパターンがあるのでしょうか。
回答よろしくお願い致します。
※できれば、根拠(言語仕様などから)とともに答えていただけると幸いです。
出力が一意に決まらないと思います。
[プログラム]
a = 1;
printf("a = %d : a = %d", a++, a++);
私が考えた限り、第1引数から評価される場合(出力結果 a = 1 : a = 2)と第2引数から評価される場合(出力結果 a = 2 : a = 1)とで2パターンが考えられると思うのですが、その他のパターンがあるのでしょうか。
回答よろしくお願い致します。
※できれば、根拠(言語仕様などから)とともに答えていただけると幸いです。