「式」というマジック
後置単項演算子「a++」のようなやつの評価は
「式全体の評価が終わるまで pending」ってのは常識ですが、
「式全体の評価が終わるまで pending」ってのは常識ですが、
#include <stdio.h> void test_func(const int a, const int b) { printf("%d %d\n", a, b); return; } int main(int argc, char** argv) { int x = 0; test_func(x++, x); return 0; }この実行結果が
0 1って事実が理解できるのに、時間がかかった自分はまだまだ甘いですわ…
・引数はスタックに積む順序で評価されるので、引数の評価順序はアテにできない。
・後置演算子の評価が pending されるのは、それが含まれる「式の評価」完了後までで、「行の評価」完了後ではない。
・引数はそれぞれが1つの式、よって引数内の後置演算子はその引数が評価完了した時点で評価される。
・後置演算子の評価が pending されるのは、それが含まれる「式の評価」完了後までで、「行の評価」完了後ではない。
・引数はそれぞれが1つの式、よって引数内の後置演算子はその引数が評価完了した時点で評価される。
ってことかな。
たぶんプラットフォーム・呼び出し規約によっては
0 0の場合もあるはず。