intをfloatにキャストする(およびその逆)のはかなり費用がかかることを私は知っています。ただし、コンパイラは、コード内の定数に対してコンパイル時に自動的にそれを実行しますか?たとえば、間に違いはありますか
float y = 123;
float x = 1 / y;
と
float y = 123.f;
float x = 1.f / y;
後者を実行するコードがいくつかありますが、それが最適化のためか安全性の問題かはわかりません(つまり、yがintであっても、除算が浮動小数点であることを確認するだけです)。
私はgccを使用しています(答えはコンパイラ固有である可能性があるため)。
また、コンパイラが一般的に最適化できるものとできないもののリストへのポインタをいただければ幸いです。ありがとう!