gpt4 book ai didi

c++ - 我应该始终为数字类型使用适当的文字吗?

转载 作者:太空狗 更新时间:2023-10-29 21:25:56 25 4
gpt4 key购买 nike

我经常在表达式中使用错误的文字,例如将 float 除以整数,如下所示:

float f = read_f();
float g = f / 2;

我相信编译器在这种情况下会首先将 int 文字 (2) 转换为 float,然后应用除法运算符。 GCC 和 Clang 总是让类似的东西通过,但 Visual C++ 警告隐式转换。所以我必须这样写:

float f = read_f();
float g = f / 2.0f;

这让我想知道:我是否应该总是对 float、double、long 等使用适当的文字?我通常会在可能的情况下使用 int 文字,但我不确定这是否真的是个好主意。

  • 这是否可能导致细微错误?
  • 这只是表达式的问题还是函数参数的问题?
  • GCC 或 Clang 是否有针对此类隐式转换发出警告的警告级别?
  • unsigned int、long int 等怎么样?

最佳答案

您应该始终明确指出您打算使用的文字类型。这将防止出现问题,例如这种代码:

float foo = 9.0f;
float bar = foo / 2;

更改以下内容,截断结果:

int foo = 9;
float bar = foo / 2;

当涉及重载和模板时,函数参数也是一个问题。

我知道 gcc 有 -Wconversion 但我记不起它涵盖的所有内容。

对于适合 int 的整数值,我通常不会将它们限定为 longunsigned,因为它们的可能性通常要小得多对于细微的错误。

关于c++ - 我应该始终为数字类型使用适当的文字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com