パスワードを忘れた? アカウント作成
13107446 journal
日記

torlyの日記: age=age++; 12

日記 by torly

 しかし寒い中窓を開けて大昔の謎ゴミの山を片付ける作業。予想はしていたが割と先が見えないこれ…

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2016年12月27日 15時30分 (#3136327)

    age = ++age;
    じゃないと、age 増えないよね

    #たまたま、同じ不具合を直したばっかりなので

    • by nekopon (1483) on 2016年12月27日 15時42分 (#3136344) 日記
      これ鼻から悪魔です
      # 未定義
      親コメント
      • by Anonymous Coward

        未定義動作で若返ったりできないか、という願望の現れなのさ

    • by Anonymous Coward

      Cの後置インクリメント演算子は演算後に適用されるので、
      1.ageに現在値を代入
      2.ageの元々の値をインクリメントしてageに代入
      です。
      おそらく実装依存になるとは思いますが。

      • by Anonymous Coward on 2016年12月27日 17時18分 (#3136414)

        >Cの後置インクリメント演算子は演算後に適用されるので、
        副作用完了点までの間のどこかであって、演算後と決まっているわけではありません。

        親コメント
    • by Anonymous Coward

      「永遠の〇〇歳」の実装例って奴だろ。

      • by Anonymous Coward

        未定義≒処理系依存なので、さかのぼってみるのはどうだろう。

        • by Anonymous Coward

          C言語の未定義と処理系定義はまったく違う。

          • by Anonymous Coward

            なるほど。JIS X 3010をちょっと覗いてみたけど、用語としては
            「処理系定義の動作」「未定義の動作」「未規定の動作」があって、
            今回のは未規定の動作にあたる、でよいのかな。
            実装上の選択肢はあるけれど天変地異が起こったりはしない、と。

            # なんか翻訳で用語がばらついてると落とし穴になりそう

            • 「未定義」(undefined): 何がおきるか、規格はまったく関知しないもの。
              「未規定」(unspecified): 実装(挙動)は何種類か考えられるけど、そのどれにするかについて規格は関知しないもの。
              「処理系定義」(implementation defined): 未規定のもののうち、言語処理系がどういう挙動を示すか明記したもの。
              この3つについて、翻訳でばらついてるようなものは見たことないですね。
              翻訳がばらつくような腐った書籍だと、そもそも未定義って言葉が出てくるとも思えないし。

              で、「age=age++;」は「副作用完了点までの間にageを2回変更している」ため「未定義の動作」です。
              「ageは1増えるか、変わらないか、そのどちらか」ではなく、もし「ageが元の値より減る」ような挙動を示したとしても、C言語の規格上は問題ありません。
              それどころか、鼻から悪魔が出ようがタイムトラベル [blogspot.jp]しようが何でもあり。

              #それにしても、age=age++はスラドで結構見かけるので、今からなツッコミだなと思いながら読んでたんですが、ちょっとググってみたらtorlyさんはここんとこ毎年書いてられるみたい [google.co.jp]ですね。

              親コメント
              • by Anonymous Coward

                JIS X 3010 が結構最近のつもりでいたので、それ以前に複数の翻訳で訳語が
                ばらけたんじゃないかと思っていたのですが、JIS X 3010 は 1993/10/01が制定なんですね。
                # 用語じゃなく訳語なことに気が付いた。

                で、話の流れから「未規定」のほうかと思っていたら「未定義」のほうですか!
                (TODO: ここに恐ろしいものの片鱗)
                やはり一般人は規格の細かいところにこだわるよりは、怪しいところに近づかないのがいいみたい…

    • by Anonymous Coward

      前置でも後置でも未定義だよ。目くそ鼻くそ五十歩百歩

typodupeerror

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

読み込み中...