static_cast的一个问题
#include<iostream>
int main()
{
using std::cout;
using std::cin;
cout << static_cast<float> (5/8);
cin.get();
return 0;
}
上面这段程序输出:0
#include<iostream>
int main()
{
using std::cout;
using std::cin;
cout << (float)5/8;
cin.get();
return 0;
}
上面这段程序输出:0.625
怎么static_cast转换不来啊
[解决办法]
static_cast<float>使用前已经把 (5/8)当成整型了
[解决办法]
(float)5/8,是先5为float,So 整个表达式为float
[解决办法]
cout << (static_cast<float> (5)/ static_cast<float>(8));
//这样才对吧! 你的代码 是已经是 int 型了 之后再float的,所以没有阿!
static_cast<float> (5/8) ;// 相当于 (float)(5/8)
(float)5/8 ; //相当于 ((float)5)/8
cout << static_cast<float> (5)/8;