C++相談室 part166 (569レス)
上下前次1-新
抽出解除 レス栞
416(2): デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 22:25:10.37 ID:ykKOKnwYM(5/7) AAS
>>415415(1): デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 21:48:47.56 ID:ykKOKnwYM(4/7) AAS
最適化されて変わる可能性があるのは、今思い出せるのは、
・初期化してない変数の中身
・変数のアドレス
・結果を利用せず、副作用も伴わない式の存在。
整数に対する四則演算を含めた「計算」は、仕様が決められているので、
同じコンパイラと同じターゲット(OS、環境)だと最適化しても
結果は変わらない。
浮動小数点に対する計算は誤差の範囲で結果が変化する可能性はある。
1. 整数の計算途中に「桁あふれ」が起きる場合はこの限りではないかも知れない。
例えば、整数型 a に対して、a * 100 / 5 は、a * 20 と最適化できる
可能性がある。しかし a がとても大きい場合には結果は同じにはならない可能性がある。このことに
関して仕様がどうなっているかは知らない。
2. 浮動小数点型の変数 a に対して、(a * 100.0) / 5.0 は、
a * 20.0 と最適化できる可能性があるが、浮動小数点型には計算誤差があるので、
誤差の範囲内で異なる結果になる可能性があるかもしれない。
これに対して仕様上、最適化していいかどうか走らない。
3. しかし、整数型
417: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [] 2025/06/20(金) 22:25:52.67 ID:ykKOKnwYM(6/7) AAS
>>416
3. しかし、整数型変数 a に対して、(a / 100) * 100 は、
明らかに
418: デフォルトの名無しさん (オイコラミネオ MMdd-Rgxs) [sage] 2025/06/20(金) 22:26:34.77 ID:ykKOKnwYM(7/7) AAS
>>416
3. しかし、整数型変数 a に対して、(a / 100) * 100 は、
明らかに a とは、結果が異なる。だから a と最適化される事は無い。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.137s*