【发布时间】:2021-11-02 14:59:30
【问题描述】:
我正在使用 Visual Studio Community 2019 在 Windows 10 Pro(64 位)上为 C++ 初学者编写编码练习。我想知道类型转换的最佳实践。以下是我尝试过的。你能请任何人给我一些建议吗?提前谢谢你。
我初始化如下:
// "long int" 4 bytes
long m = 2;
// double 8 bytes
double x = 2 * m;
然后我收到警告 C26451:“算术溢出:在 4 字节值上使用运算符'',然后将结果转换为 8 字节值。在调用运算符之前将值转换为更广泛的类型”' 以避免溢出(io.2)。”
所以我更正如下,警告消失了。 除了下面的问题,还有其他方法可以解决问题吗?
// "long int" 4 bytes
long m = 2;
// double 8 bytes
double mConvertToDouble;
mConvertToDouble = static_cast<double>(m);
double x = 2 * mConvertToDouble;
【问题讨论】:
-
2. * m;,通过将.放在2上,它使2变为双精度,因此m将在乘法之前自动转换为双精度. (注意m,定义为long将成为int,因为这就是VS对待long的方式) -
你为什么要进行这种转换?
-
@ChrisMM 非常感谢您的建议。我尝试了您建议的解决方法,它奏效了!感谢您的帮助。
-
@newbie99 谢谢你的提问。这是因为我收到了如上所述的类型转换错误 C26451。我会回答你的问题吗?
-
@newbie99 我还想练习如何正确地进行类型转换。
标签: c++ visual-studio visual-c++