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

Exchange Server、新年早々「2201010001」を long に変換できないエラー」記事へのコメント

  • by Anonymous Coward

    よく日付が埋め込まれているDNSゾーンファイルのSerial値は、同じ32ビットですが符号なしなので倍いけるようです。2147483647案件を見るたびに、なんで符号入れておくんだろう?と思うんです。

    • by Anonymous Coward

      そして大小比較に減算を使ってバグるまでがセット。

      • by Anonymous Coward

        データ有効範囲を考えれば符号いらない!と思っても途中演算やらの都合でunsignedがバグにつながる事ってけっこうありますよね
        ※もちろんバグらない方法もあるけど安易にコードを書くと(ry
         while (cnt-- >= 0) {
          // 処理
         }

        • by Anonymous Coward

          そのパターンだとそもそも無限ループになるか一回も実行されないかのどっちかでは。

          • by Anonymous Coward

            C/C++の場合、もしループの中で副作用(volatile変数へのアクセスとか)がなかったら未定義動作になる。コンパイラーは、プログラムの実行はいつか終了するものと決めつけてコード生成していい。まあそうでなくては停止問題を解く羽目になりかねないから選択の余地はない

            • by Anonymous Coward

              未定義なのはC++だけ。
              Cでは無限ループ書くのも、一定条件下でコンパイラが無限ループを消し飛ばすのも合法。

              • by Anonymous Coward

                あ、Cだと制御式が定数式の無限ループは合法なのね。

                > 一定条件下でコンパイラが無限ループを消し飛ばすのも合法。

                これは

                > may be assumed by the implementation to terminate.

                のこと? 規格で"may be assumed"と書かれていたら、それは「仮定が満たされなかった場合動作は未定義である」という意味だよ。未定義なんだから無限ループを消し飛ばすのも合法ではあるが。

              • by Anonymous Coward on 2022年01月04日 7時25分 (#4179308)

                そこらへんの文言を入れた理由も書いてあるから、N1528を読め。
                それでもなおmay be assumed が書いてあるから未定義だと思うのなら、そう思った根拠付きでcommiteeに言ってやれ。

                親コメント

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

処理中...