Почему умножение с круглыми скобками и без них имеет большое значение? - PullRequest
2 голосов
/ 21 марта 2020

Если я умножу без скобок, чтобы получить число по Фаренгейту, я получу другое число, чем если бы я умножился на них. Почему это так?

#include <stdio.h>

int main (){
    double userinput, fahr1, fahr2;

    printf("Enter a number in Cels ");
    scanf("%lf", &userinput);

    fahr1 = userinput*(9/5)+32;
    fahr2 = userinput*9/5+32;

    printf("fahr1 = %f and fahr2 = %f \n", fahr1, fahr2);

    return 0;
}

Выходы:

Enter a number in Cels 15
fahr1 = 47.000000 and fahr2 = 59.000000 

Ответы [ 3 ]

5 голосов
/ 21 марта 2020

(9/5) - целочисленное деление, которое оценивается как 1. Но userinput*9 оценивается как двойное число, а затем деление на 5 также рассматривается как двойное число.

0 голосов
/ 21 марта 2020

Здесь

1) userinput * (9/5) +32;

    15.0*(1)+32   //1.8 goes to 1 because integer division
    15.0+32
    47.0

2) userinput * 9/5 + 32;

    15.0*9/5+32
    135.0/5+32
    27.0+32
    59.0  
0 голосов
/ 21 марта 2020

Объяснение очень простое

Без скобок: 15,0 * 9 = 135,00 135,0 / 5 = 27,00 27,0 + 32 = 59,00

С скобками: 9/5 = 1 (целочисленное деление ) 15,0 * 1 = 15,0, 15,0 + 32 = 47,00

...