Нужно ли добавлять (плавать) для каждой переменной? - PullRequest
0 голосов
/ 28 декабря 2018

Узнав о типизации в C, и мне интересно, нужно ли мне иметь (float) перед ценой тыкв или перед ценой тыкв, продажи и дни работали, как парень вучебник, который я смотрю.

float avg_profit;
int price_of_pumpkin = 10;
int sales = 59;
int days_worked = 7;

avg_profit = (float)price_of_pumpkin * sales / days_worked;

printf("Average daily profit: $%.2f", avg_profit);

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Для операторов * и /, если один из операндов равен float, то любой другой операнд целочисленного типа будет преобразован в float до выполнения операции, и результат снова будет равен * 1005.*.

Если у вас есть цепочка таких операторов, то вы должны учитывать ассоциативность.Ассоциативность для математических операторов, таких как +, -, * и /, слева направо.

Итак, чтобы ответить на ваш вопрос, достаточно привести самый первый операнд к float;Другие операнды будут преобразованы неявно, если это необходимо.

0 голосов
/ 28 декабря 2018

, если мне нужно иметь только (float) перед ценой тыкв

В C многие операторы, такие как *,/,+,- (не все), требуют операнды,после обычных рекламных акций, чтобы быть того же типа.

Если они различаются, один из них преобразуется в тип другого.

В случаях int math_operator float, float math_operator int int преобразуется в float.


Давайте попробуем по-разному.

int price_of_pumpkin = 10;
int sales = 59;
int days_worked = 7;

Будет avg_profit1 печататься как "84.29" или "84.00"?

float avg_profit1 = price_of_pumpkin * sales / days_worked;

Будетavg_profit2 печать как "84.29" или "84.00"?

float avg_profit2 = (float)price_of_pumpkin * sales / days_worked;

Будет avg_profit3 печать как "84.29" или "84.00"?

float avg_profit3 = (float)price_of_pumpkin * (float)sales / days_worked;

Дополнительные сведения.

Даже float * float / float может быть сделано с использованием математики double или long double, поскольку C позволяет, в зависимости от значения FLT_EVAL_METHOD, использовать математику с более высокой точностью.

0 голосов
/ 28 декабря 2018

Вам нужно только привести первую переменную в вашей формуле.Как только вы приведете price_of_pumpkin к float, результатом умножения станет также и число с плавающей точкой, и будет выполнено деление числа с плавающей точкой.

Если в учебном пособии предложено приводить каждую переменную в формуле, вылучше посмотреть другой учебник или, еще лучше, почитать книгу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...