c++ - 算术表达式开头的类型转换适用于什么?

我不明白类型转换怎么会出现在二进制算术表达式的开头。它是对两个变量还是只对一个变量进行类型转换?

#include <stdio.h>
main()
{
    int sum = 17, count = 5;
    double mean = (double) sum / count;
    printf("Value of mean : %f\n", mean );
}

它是转换 (double) (sum/count) 还是仅转换 ((double) sum)/count

最佳答案

解析为((double) sum) / count .转换其中一个操作数是强制进行浮点除法的常用技巧。 int / int将使用截断小数部分的整数除法。 double / int强制将第二个操作数强制转换为 double同样,导致 double / double这不会截断。

请注意,如果它被解析为 (double) (sum / count)它会工作。这仍然会执行整数除法,截断小数部分,然后然后将该结果转换为 double 。 Actor 阵容来得太晚了。

如有疑问,请咨询cppreference.com .他们的operator precedence chart表明 C 风格的转换具有比除法更高的优先级:

The following table lists the precedence and associativity of C++ operators. Operators are listed top to bottom, in descending precedence.

https://stackoverflow.com/questions/68969394/

相关文章:

c - 如何在障碍处正确同步线程

css - 选择中的 A​​ntd 自动换行

r - 有没有办法计算 R 中多个数据帧中每个单元格的标准差?

angular - 使用 BehaviorSubject 与 angular 中的

html - 如何更改复选框、 slider 、单选按钮和选择组件的强调色

kubernetes - 是否有允许命令 `kubectl rollout restart depl

ruby-on-rails - 为什么我尝试在 ruby​​ 中打印 [string * Integ

python - MaxProductOfThree 如何提高性能

python - 将列表形式的字符串转换为整数列表

python - 修正 cv2.inRange() 函数的色彩空间