我不明白类型转换怎么会出现在二进制算术表达式的开头。它是对两个变量还是只对一个变量进行类型转换?
#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/