問題タブ [unspecified-behavior]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 浮動小数点: FLT_HAS_SUBNORM が 0 => 非正規値が発生 => 未指定の動作?
FLT_HAS_SUBNORM is 0
FP 演算 (add、mul、div など) の実行中に非正規値が発生した場合 (またはこれらの FP 演算への入力として非正規値が与えられた場合)、FP エンジンの実装 (つまり、HW 実装 [ FPU ]、SW 実装 [SW FP ライブラリ]、HW-SW 混合実装 [HW 命令とそれに続く追加の SW 後処理を使用する SW FP ライブラリ]) は、次のことができます。
- そのような非正規値を検出し、それらをゼロに設定します (つまり
flash-to-zero
、ポリシー / ロジック)。 - [特別な] 何もしない (予測できない出力結果値につながる)。
質問: 誰かが、このケースの動作がカテゴリに分類されることを納得させる正しい議論を提供できますC
か?IEEE 754
unspecified behavior
注: ISO/IEC 9899:202x (E) ワーキング ドラフト — 2020 年 2 月 5 日 N2479:
3.4.4 不特定の振る舞い
不特定の値の使用に起因する動作、またはこのドキュメントが 2 つ以上の可能性を提供し、任意のインスタンスで選択されるさらなる要件を課さないその他の動作
c - 「複数のオブジェクト表現を持つオブジェクト」に関する未規定の動作
C (C99) の未定義および未指定の動作にまだ苦労しています。
今回は、次の未規定の動作です (附属書 J.1):
その値に対して複数のオブジェクト表現を持つオブジェクトに値を格納するときに使用される表現 (6.2.6.1)。
対応するセクション 6.2.6.1 には次のように記載されています。
複数のオブジェクト表現を持つ値に演算子が適用される場合、どのオブジェクト表現が使用されるかは、結果の値に影響を与えません43)。その値に対して複数のオブジェクト表現を持つ型を使用して値がオブジェクトに格納される場合、どの表現が使用されるかは指定されていませんが、トラップ表現は生成されません。
次の注記 43:
同じ実効型を持つオブジェクト
x
とは、 type のオブジェクトとしてアクセスされたときに同じ値を持つことができますが、他のコンテキストでは異なる値を持つことができます。特に、type に対して が定義されている場合、 はそれを意味しません。さらに、必ずしもそれを意味するわけではなく、同じ値 を持っています。タイプの値に対する他の操作は、それらを区別する場合があります。y
T
T
==
T
x == y
memcmp(&x, &y, sizeof(T)) == 0
x == y
x
y
T
複数のオブジェクト表現を持つ値が何であるかさえ理解していません。たとえば、0(負および正のゼロ)の浮動小数点表現に関連していますか?