为什么每当我在 Visual Studio 2008 中编译并运行以下代码时:
double value1 = 10.5;
double value2 = 15.5;
int whole_number = value1 + value2;
Console::WriteLine(whole_number);
我得到一个不正确的值 26,而答案是 25。
但是,当我对 double 使用静态转换时,我得到了正确的答案,即 25。
如何解释错误的输出?
最佳答案
完全正确。
double value1 = 10.5;
double value2 = 15.5;
int whole_number = value1 + value2; // int whole_number = 26.0;
Console::WriteLine(whole_number);
你会期待什么?编译器首先计算右侧,然后隐式转换为 int。因此,26.0
变为 26
当你在添加之前进行转换时,你将添加 10
和 15
,结果是 25
:)
关于c++ - 不一致造成的static_cast困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/313141/