アセンブラになったら
つぎのプログラムをコンパイルして実行するとどうなりますか?
#includeint test(int a, int b, int c) { std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; std::cout << "c = " << c << std::endl; return 0; } int main(void) { int tmp = 0; test(tmp++, tmp++, tmp); return 0; }
さて出力結果は
a = 1 b = 0 c = 2
これは予想通り?
僕は予想どおりではない…。
アセンブラみると、test関数に渡す引数をスタックにつめるのとインクリメントするという処理が、僕の予想とは異なっていた。
ってことで、教訓。
あんまりこったことしない。
やるならアルゴリズムで!