C言語で次の記述をしたとき、どちらの関数が先に呼び出されると思いますか?
(1) result = func1() + func2();
(2) result = -func1() + func2();
Linuxのgccの場合、(1)のときはfunc1が先に呼び出され、(2)のときはfunc2が先に呼び出されます。
通常の処理では問題はないと思いますが、順序に意味があるスタック等の場合は問題になります。
result = -pop() + pop();
なぜこのようになるか調べていますが、時間がかかりそうです。