パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

age=age++;」記事へのコメント

  • by Anonymous Coward

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

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

    • 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言語の規格上は

              • by Anonymous Coward on 2016年12月27日 23時02分 (#3136620)

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

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

                親コメント

アレゲはアレゲを呼ぶ -- ある傍観者

処理中...