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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.27029 の関連記事表示

<< 0 >>
■27029  Re[2]: インクリメントの結果が違ってしまいます
□投稿者/ ぽぴ王子 -(2008/10/25(Sat) 08:34:33)
>
    No27027 (naga さん) に返信

    > ところが先日、2回同じ処理を流した結果の件数が異なるという報告が来ました。

    件数が異なるのはわかりますが、どう違うのですか?
    そこが今回の一番のキモだと思うんですが、それを省略したら誰もわかりませんよ。

    > 試しに下記2つの方法でインクリメントさせたのですが、逆アセンブルを実行した結果、@のみ違う結果となります。

    もしかして:逆コンパイル
    Jad とか JODE とかを使って逆コンパイルしてみたということですか?
    これも上記と一緒ですが、違うだけ言われても「どこがどう違ってどうなっているのか」を
    示してくれないと、誰もわかりません。

    >   this.iCnt = this.iCnt + 1; ---@
    >
    >   this.iCnt += 1; ---A
    >
    >   this.iCnt++1;  ---B

    > @もAもBも同じことをやっているように思えるのですが、コンパイラ内部で何か違う処理をやっているのでしょうか?

    コンパイラの内部の流れはコンパイラを作った人間ではないのでなんとも言えないです。
    ただ、自分であれば@はほぼ間違いなく使いません。++ や += が使えない VB の場合ぐらいでしょうか( += は今の VB は使えますけどね)
    あとBの ++1 ってコンパイル通ります?もしかしたら通るのかもしれないけど、こう書いたことがないのでなんとも。

    > 原因や、JDKのバグ等の情報をご存知の方がおられましたら、ぜひご教授お願いいたします。

    JDK の問題と考えたら、とりあえず Sun に問い合わせてみるのもいいんじゃないでしょうか。
    というか製造元に問い合わせるのは基本中の基本だと思います。
記事No.27027 のレス /過去ログ49より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -