C 为什么if(1/10)和if(0.1)的值不同?

C 为什么if(1/10)和if(0.1)的值不同?,c,C,只是不明白为什么下面两个有不同的值。第一个值为0,而另一个值为1 if(1/10); if(0.1); 默认情况下,1的类型为int,因此1/10将向下舍入为0,这相当于false。而0.1设置了一些位,并且不是0 另一方面,1.0/10相当于0.1 if(condition) 此处执行条件,并使用0进行检查。如果为0,则表示false,否则表示true。1/10给出的值0等于0(整数/整数给出整数结果),因此条件失败,其中as 0.1不等于0,因此它被视为true,并且将执行if块中的cu

只是不明白为什么下面两个有不同的值。第一个值为0,而另一个值为1

if(1/10);
if(0.1);

默认情况下,
1
的类型为
int
,因此
1/10
将向下舍入为
0
,这相当于
false
。而
0.1
设置了一些位,并且不是
0

另一方面,
1.0/10
相当于
0.1

if(condition)

此处执行
条件
,并使用0进行检查。如果为0,则表示
false
,否则表示
true
。1/10给出的值0等于0(整数/整数给出整数结果),因此条件失败,其中as 0.1不等于0,因此它被视为
true
,并且将执行
if
块中的currenespoing语句。

我认为值得注意,甚至
1.0/10
0.1
也不一定相等,因为浮点数表示特性。相关:。如果(1/10.0)或(1.0/10)或(1.0/10.0)执行if,它将为您提供0.1,因为将使用浮点值进行除法。您还可以使用
1f/10
。。。或
1/10
1/10.