整数除法总是为零

可能重复:
C程序devise师

可能我的问题很简单和愚蠢。 我想存储一个分区的值,特别是1 / x ,其中x是一个整数值。

 int x = 17; double result = 1/x; 

我试图做到这一点,但我总是得到0.000000 ...我尝试input一个固定的值,例如1/17但总是得到相同的值..什么是错误的?

你正在做整数除法。

尝试以下,它会按预期工作:

 int x = 17; double result = 1.0 / x; 

上面expression式中的1的types是int ,而x的types是int。 当你做int / int ,你会得到一个int。 您至less需要其中一种浮点types( floatdouble float )才能进行浮点型除法。

与math不同的是,C ++中的部门可以引用截断整数除法(你所做的)或浮点除法(在我的例子中是这样做的)。 小心这个!

在我的例子中,显式地我们有double / int -> double