C语言中10/3.0*3为什么等于10.0而不是9.9
时间: 2023-05-18 17:05:27 浏览: 186
这是因为在C语言中,10和3.0都是浮点数,所以10/3.0的结果也是浮点数,即3.3333。然后再乘以3,得到的结果是9.9999,但是由于浮点数的精度问题,实际上这个结果可能会略微偏差,最终结果可能是9.999999999999998,但是由于输出时被截断了,所以最终结果是10.0。
相关问题
/**********/在c语言中什么意思
在C语言中,`/**********/`并没有特殊的意义。这看起来像是一个注释的样式,但实际上在C语言中,注释是以`/*`开始,并以`*/`结束的。所以,如果你看到`/**********/`,它可能就是一个不完整或者错误的注释。
例如,以下的代码是正确的注释使用方法:
```c
/* 这是一个注释 */
```
而以下的代码是错误的:
```c
/**********/ 这是一个注释 // 这是另一个注释
```
在这个例子中,`/**********/`并没有起到任何作用,只有`/* 这是一个注释 */`是有效的注释。
C语言中为什么double d = 1/4*3=0
### 回答1:
在C语言中,除法运算符"/"在操作整数时会做整数除法,即只保留整数部分,舍去小数部分。因此,表达式1/4会被计算成0,3也是整数,所以3除以4同样会被计算成0。因此,表达式1/4*3在C语言中会被计算成0,而不是0.75。要使结果正确,可以将表达式改为1.0/4*3,这样C语言会将1.0视为浮点数,从而进行浮点数除法,计算结果为0.75。因此,double d = 1.0/4*3的结果应该是0.75,而不是0。
### 回答2:
在C语言中,当使用整数进行计算时,得到的结果也会是整数。在这个表达式中,1/4会被计算为整数除法,其结果为零。接着,该结果再乘以3,得到的仍然是零。最后将结果赋给double类型的变量d,由于d是浮点类型,所以最终结果为0.0。
为了得到期望的结果,需要将1或4其中一个转换为浮点数。例如,可以将1改为1.0,以确保1/4的计算结果得到0.25。修改后的表达式为 double d = 1.0/4*3,此时d的结果为0.75。这是因为此表达式中,1.0/4会被计算为浮点除法,其结果是一个浮点数,然后乘以3,得到0.75。最后将结果赋给d,d被声明为double类型,所以最终结果为0.75。