タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

c++と言語に関するmizdraのブックマーク (2)

  • C++でうっかり無限ループを書くと鼻から悪魔が出てくる - Qiita

    C++で副作用のない無限ループを書くと未定義動作になります。 「未定義動作」というのは口に出すだけでC++プログラマーを震え上がらせる力を持った言葉です。「鼻から悪魔が出てくる」という言葉で説明されるように、未定義動作を含むコードを実行した結果は何も保証することができず、バグの発見やデバッグすら困難にさせます。未定義動作下においてはコンパイラの気分によってコード片が消え、trueとfalseが同時に成立し、タイムトラベルを引き起こします1。 そのためC++ではうっかり未定義動作が埋め込まれないよう注意が払われるのが普通です。 さて、以下のC++のコードは未定義動作を引き起こします。 下の例は実際にclang/LLVMで最適化を有効にしてコンパイルするとでたらめな値を返す関数ができました。 この話をしたところ、何人かに驚かれたり異論を受け取ったりしたので、この話題について少しまとめてみました

    C++でうっかり無限ループを書くと鼻から悪魔が出てくる - Qiita
  • 評価順序 - cppreference.com

    [編集] 先行配列のルール (C++11以上) [編集] 定義 [編集] 式の評価 それぞれの式の評価には以下の2つが含まれます。 値計算 ー その式によって返される値の計算。 これはオブジェクトの識別性の決定 (glvalue の評価、例えば式が何らかのオブジェクトへの参照を返す場合) や、オブジェクトに以前に代入された値の読み込み (prvalue の評価、例えば式が何らかの数値を返す場合) に影響することがあります。 副作用の開始 ー volatile 指定されたオブジェクトへのアクセス (読み書き)、オブジェクトへの変更 (書き込み)、ライブラリの入出力関数の呼び出し、またはそれらのいずれかの操作を行う関数の呼び出し。 [編集] 順序付け 「先行配列」は、非対称で推移的な、同じスレッド内の評価間の二項関係です。 A が B に対して先行配列される場合、 A の評価は B の評価が始

  • 1