【发布时间】:2016-09-27 20:11:33
【问题描述】:
在 C++ 中处理不同数据类型之间的转换...下面的程序打印:
>"Number is 2"
>"Number is 2.5"
>"Number is 2"
请解释为什么最后一个打印输出不是“数字为 2.5”,这是我在 C++ 样式转换为浮动之后所期望的?
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
int iNumber = 5;
float fNumber;
// No casting - C++ implicitly converts the result into an int and saves into a float
// which is a conversion from 'int' to 'float' with possible loss of data
fNumber = iNumber / 2;
cout << "Number is " << fNumber << endl;
// C-style casting not recommended as not type safe
fNumber = (float) iNumber / 2;
cout << "Number is " << fNumber << endl;
// C++ style casting using datatype constructors to make the casting safe
fNumber = static_cast<float>(iNumber / 2);
cout << "Number is " << fNumber << endl;
_getch();
return 0;
}
【问题讨论】:
-
(iNumber / 2) 变为 2,然后将其转换为浮点数,因此值将是 2。操作顺序。在之前的那个中,您将 iNumber 在除法之前转换为浮点数,这就是它输出 2.5 的原因。
标签: c++ floating-point int implicit-conversion explicit-conversion