【初心者歓迎】C/C++室 Ver.106【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.106【環境依存OK】 - 暇つぶし2ch243:はちみつ餃子
20/10/14 17:04:47.78 +PdAwU8N.net
>>224
この場合は double のビットパターンが整数として読み替えられたということで説明がつくみたいだけど、
言語仕様としては未定義なので別の結果になる可能性もある。
Windows では x86_64 上での引数の渡し方 (呼出規約) は浮動小数点には xmm レジスタを使うが、
引数が浮動小数点だけのときは整数レジスタの方にも値を入れておくというルールがある。
URLリンク(docs.microsoft.com)
このおかげで浮動小数点を整数として読みだしても一応の整合性はとれるようになってる。
Linux などで使われる規約 (いわゆる System V ABI) ではそういう予防措置っぽいものがないように見える。
URLリンク(refspecs.linux-foundation.org)
たぶんそのときにたまたま整数レジスタに入っている値が得られるだけなんじゃないかな。
英語がそんなにわからんから見落としがあったらすまぬ……。
手元に Windows しかないからオンラインコンパイラで試してみたんだけど、
実行のたびに違う値になる。
URLリンク(wandbox.org)

未定義なものが未定義な結果になるのはある意味では「書いた通り」なんだが、
各環境の事情が絡んでくるから読み解くのは難しいね。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch