我经常在表达式中使用错误的文字,例如将浮点数除以整数,如下所示:
float f = read_f();
float g = f / 2;
我相信在这种情况下编译器会首先将 int 文字 (2) 转换为浮点数,然后应用除法运算符。GCC 和 Clang 总是让类似的东西通过,但 Visual C++ 警告隐式转换。所以我必须这样写:
float f = read_f();
float g = f / 2.0f;
这让我想知道:我是否应该始终对 float、double、long 等使用适当的文字?每当我可以摆脱它时,我通常会使用 int 文字,但我不确定这是否真的是一个好主意。
- 这可能是导致细微错误的原因吗?
- 这只是表达式的问题还是函数参数的问题?
- GCC 或 Clang 是否存在警告此类隐式转换的警告级别?
- unsigned int,long int等怎么样?