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

我不明白如何将类型转换置于二进制算术表达式的开头。它是对两个变量进行类型转换还是仅对一个变量进行类型转换?

#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强制第二个操作数也被强制转换为 a double,从而导致double / doublewhich 不会被截断。

请注意,如果它被解析为(double) (sum / count),将无法正常工作。这仍然会执行整数除法,截断小数部分,然后将该结果转换为双精度值。演员来得太晚了。

如有疑问,请咨询cppreference.com。他们的运算符优先级图表显示 C 风格的强制转换比除法具有更高的优先级:


以上是算术表达式开头的类型转换适用于什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>