C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 49 を表示中)
■27069 / )  Re[6]: インクリメントの結果が違ってしまいます
□投稿者/ 凪瀬 (81回)-(2008/10/27(Mon) 12:30:28)
No27036 (naga さん) に返信
> for (int i=0;i < 20;i++) {
> t.iCnt1 = t.iCnt1 + 1;
> t.iCnt2 += 1;
> t.iCnt3++;
> System.out.println("iCnt1=" + t.iCnt1 + " iCnt2=" + t.iCnt2 + " iCnt3=" + t.iCnt3);
> }
>
> この状態で実行すると、t.iCnt1 = t.iCnt1 + 1; の部分だけ+2されたり、+1されたりします。。。

当方で該当コードを動かしてみましたが、そのような現象は確認できませんでした。
Sun製のJRE1.6.0でWindows Vista上で確認。

最適化関連でバイトコードのオーダ変更が変な形でされているとか、あるいは該当JREのバグか。並列系だと同期関連バグなんじゃないの、というところですが…。いかんせん、言語仕様的な理由ではないでしょうね。
返信 編集キー/


管理者用

- Child Tree -