2017-08-30 27 views
-4

我仍然是C++的初学者,所以我在基础知识上寻求一些帮助。 这里,在下面的代码中,我使用类型转换来查找122/65的值,但即使使用双数据类型,我也只获取整数部分。为什么double a =(double)('z'/'A')只给出C++中的整数部分?

#include <iostream> 

using namespace std; 

int main() 

{ 

    double a=(double)('z'/'A'); 

    cout<<a; 

    return 0; 

} 

有人能为我提供一个很好的理由吗?

谢谢。

+3

因为'“z''和'” A''都是*整数*,和你有一个整数除法。您只将整数除法的*结果*转换为“double”。 –

+1

你能否向我们解释为什么你在你的部门使用*字符?你试图通过这个非常奇怪的部门来解决的“实际”问题是什么? –

+1

'((double)'z')/'A'' –

回答

5

您进行整数除法,然后对结果进行类型转换以加倍。基本上你:

(double) (122/65) = (double) (1) = 1.0 
          ^truncated -> integer division 

如果你想有一个浮点除法,你可以这样来做:

double a = (double)'z'/(double)'A'; 
//  a = 122.0  /65.0 
+0

@Someprogrammerdude是,已编辑。谢谢。 – izlin

相关问题