首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算术表达式开头的类型化应用于什么?

算术表达式开头的类型化应用于什么?
EN

Stack Overflow用户
提问于 2021-08-29 02:11:00
回答 2查看 78关注 0票数 2

我不明白,在二进制算术表达式的开头,打字机怎么能坐着呢?它是两个变量还是一个变量的类型?

代码语言:javascript
复制
#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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-29 02:19:35

它被解析为((double) sum) / count。铸造一个操作数是一个常见的技巧,以强制浮点除法。int / int将使用整数除法来截断小数部分。double / int也强制将第二个操作数强制放入double中,从而导致double / double不截断。

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

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

下表列出了C++运算符的优先级和相联性。运算符从上到下列出,按降序排列。

票数 5
EN

Stack Overflow用户

发布于 2021-08-29 02:18:12

类型广播运算符比除法运算符具有更高的优先级。所以这个:

代码语言:javascript
复制
(double) sum / count

分析如下:

代码语言:javascript
复制
((double) sum) / count

这意味着sumdouble的类型。然后,由于一个操作数到/的类型为double,另一个操作数的类型为int,因此int操作数按照通常的算术转换和浮点除法被转换为double

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68969394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档