.NET(へたれな)コネタ VBでのインクリメンタル演算子
現在のプロジェクトのプログラマが本日、ハマったねたです。VBプログラマが.NET化ということで「++」を変な使い方をしたことがいけなかったのですが、.NETの動作としても腑に落ちない内容があります。問題のコードは次のようなコードです。
IF 条件 Then a = ++a End If
現象:この場合条件が真であっても、「a = ++a」は決して評価されることはない。(実行されない)
最初「a = ++a」の異常性に気がつかず、条件の成立を調べていたので問題の本質に気がつくのが遅くなってしまいました。
対処:処理として異常である「a = ++a」を「a = a + 1」に修正することにより正常に動作するようになりました。
原因推測:コンパイラの最適化処理のバグで意味のない?行をスキップしてしまうのかな?