当前位置:  开发笔记 > 编程语言 > 正文

由不一致引起的static_cast混淆

如何解决《由不一致引起的static_cast混淆》经验,为你挑选了1个好方法。

为什么每当我在Visual Studio 2008中编译并运行以下代码时:

double value1 = 10.5;
double value2 = 15.5;
int whole_number = value1 + value2;
Console::WriteLine(whole_number);

当答案是25时,我得到的值不正确26.

但是当我在双打中使用静态强制转换时,我得到了正确的答案,即25.

如何解释错误的输出?



1> Johannes Sch..:

这是绝对正确的.

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:)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有