gpt4 book ai didi

c - 为什么 (5+10)/2 是 7.0 而不是 7.5? C编程

转载 作者:行者123 更新时间:2023-12-04 11:40:00 25 4
gpt4 key购买 nike

C 代码:

 int main(void) {
int i = 0, j = 0;
double avg = 0;
int *pi, *pj;
double *pavg;

..

    pi = &i;
pj = &j;
pavg = &avg;

..

    *pi = 5;
*pj = 10;
*pavg = (*pi + *pj) / 2;

打印的地方:

    printf("%lf\n\n", avg);

它打印7.000000000

    return 0;
}

最佳答案

当您执行 (*pi + *pj)/2 时,您正在执行整数运算。在您分配给 double 变量之前,小数点后的数字已经被丢弃。

一种方法是执行 (*pi + *pj)/2.0。表达式的操作数之一是 double ,其他 int 将在计算表达式之前提升为 double

另一种选择是 typecast double ((double)*pi + *pj)/2 的变量之一。在这里,具有更高优先级的取消引用运算符将​​在类型转换之前进行评估。

关于c - 为什么 (5+10)/2 是 7.0 而不是 7.5? C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61906158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com