次のように、式で間違ったリテラルを使用することがよくあります。たとえば、floatをintで除算します。
float f = read_f();
float g = f / 2;
この場合、コンパイラは最初にintリテラル(2)をfloatに変換してから、除算演算子を適用すると思います。GCCとClangは常にそのようなものを通過させてきましたが、VisualC++は暗黙の変換について警告します。だから私はそれをこのように書かなければなりません:
float f = read_f();
float g = f / 2.0f;
それは私に不思議に思いました:私は常にfloat、double、longなどに適切なリテラルを使用する必要がありますか?私は通常、intリテラルを使用することができますが、それが実際に良いアイデアかどうかはわかりません。
- これは微妙なエラーの原因である可能性がありますか?
- これは式だけの問題ですか、それとも関数パラメーターの問題ですか?
- そのような暗黙の変換について警告するGCCまたはClangの警告レベルはありますか?
- unsigned int、long intなどはどうですか?