c - 为什么这些括号在C语言中给出不同的答案?

标签 c cs50 parentheses arithmetic-expressions integer-division

我正在研究CS50 PS 2的可读性,并且在年级水平上得到了不正确的输出。

调试显示输入值正确,但是输出错误。使用输入进行手动计算得出正确答案。

我简化了方程式的第一部分,发现了这一点:

使用214L值和56W值,表达式:

float R = (0.0588 * (L / W) * 100);

输出17.64,这是错误的。

当我使用时:
float R = (0.0588 * L / W * 100);

它输出22.47,这是正确的。

我不知道为什么。

最佳答案

表达方式

float R = (0.0588 * (L / W) * 100);

将发展为
float R = 0,0588 * 3 * 100;

四舍五入到小数点后两位时是17.64
L / W的结果integer divisionint,因此结果3.8...将被截断为3

要更正此问题,变量WL中至少有一个必须为floatdouble类型。

表达方式
float R = (0.0588 * L / W * 100);

将发展为
float R = ((0,0588 * 214) / 24) * 100 //parenthesis to illustrate the sequence 

当四舍五入到小数点后两位时,将输出正确的结果22.47

关于c - 为什么这些括号在C语言中给出不同的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61640743/

相关文章:

c - 奇怪的行为如果条件

c - 为什么我的代码在加密第二个单词后插入了 3 个空格?

c - 为什么我在这个问题上得到了错误的答案(Uva OJ 455)

c - 写入文件时出现 "Permission denied"错误,但前提是该文件尚不存在

c - 如何在 C 中创建用户定义类型?

RStudio:右括号被覆盖

perl - 匹配的文本没有被括号括起来

c - 如何从内核空间向数据包附加数据?

c - mingw 是否允许在没有 page_execute 的情况下执行字节数组?

php - PHP 中变量周围的括号有什么作用?