C++ 初始化变量时使用文字常量后缀

C++ 初始化变量时使用文字常量后缀,c++,C++,初始化变量时总是使用后缀是一种好的做法吗?这些案子呢 float foo = 0.0F; unsigned int bar = 0U; 或者,您是否仅在可能存在转换问题时才使用文字后缀?这是一个问题 当需要强制编译器将数值文本视为指定类型时,应该使用这些后缀 还有一个很好的例子: 如果x为float类型,则表达式x+5.7为double类型:它首先将x的值提升为double,然后使用双精度指令执行算术。如果那是你想要的,好吧;但是,如果您真的希望它使用单精度指令执行算术,您可以将该代码更改为x

初始化变量时总是使用后缀是一种好的做法吗?这些案子呢

float foo = 0.0F;
unsigned int bar = 0U;
或者,您是否仅在可能存在转换问题时才使用文字后缀?

这是一个问题

当需要强制编译器将数值文本视为指定类型时,应该使用这些后缀

还有一个很好的例子:

如果
x
为float类型,则表达式
x+5.7
double
类型:它首先将
x
的值提升为
double
,然后使用双精度指令执行算术。如果那是你想要的,好吧;但是,如果您真的希望它使用单精度指令执行算术,您可以将该代码更改为
x+5.7f

也有可读性的原因

如果最终使用的是无符号变量,通常最好强制数字文本也无符号。这使得更容易看到编译器将生成“无符号算术”指令


这是否意味着“当可能存在转换问题时只使用文字后缀”或“好的实践总是使用后缀”?这意味着:<代码>对于程序员来说,强制所有数值操作数都是正确的类型是一个很好的规则,而不是依赖于C++规则来促进/降级数字表达式< /代码>。如果“正确”的类型是你无论如何都会得到的没有文字的类型,那就没什么关系了。谢谢,这很有意义。是否存在与“浮动foo=0.0;”相关的成本?或者这是在编译时转换成浮点的吗?不是用那个,但在运行时会出现以下情况:
float x=1.0f;自动dd=x+5.7因为将涉及float2double转换(在这种特定情况下是符号扩展)