c++ - 不一致造成的static_cast困惑

标签 c++ casting double int

为什么每当我在 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

当你在添加之前进行转换时,你将添加 1015,结果是 25 :)

关于c++ - 不一致造成的static_cast困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/313141/

相关文章:

mysql - 将字符串转换为 double (非十进制)

c++ - 线程中的 Select() 系统调用?

c++ - 递归函数中的返回类型推导

char 数组上的 C/C++ 开关大小写

java - 为什么不转换为 NavigableSet 抛出 ClassCastException?

objective-c - Objective C - 如何将 double 转换为 long

python - 调试嵌入式 Python

c++ - C++ 中的段错误(核心转储)

Java类型不匹配无法从int转换为byte?

java - Java 中类的问题