2015-04-23 2 views
-5

Я отношусь к новинке в кодировании, поэтому мой вопрос может показаться действительно скучным. Я решала проблемы и в предложенном решении была линия, которая идет:Какова функция (double) C++

return 4 * (double)nrC/n; 

где «СРН» и «п» являются целыми числами.

Какова функция (двойная) здесь. Включает ли он «nrC» и «n» в double?

+0

Посмотрите, что отличено. –

+0

Да, это называется литье –

ответ

1

Как уже упоминалось, это литье, которое преобразует тип значения.

Причина, почему она используется здесь в том, что при выполнении деления только с целыми числами (например, 4/3), вы получите целочисленную арифметику: вы потеряете остаток (то есть 4/3 = 1 (remainer 1 теряется)) ,

Это иногда нежелательно. так как результаты могут сильно различаться в зависимости от того, используете ли вы целочисленное деление или дробное деление:

int nrC = 3; 
int n = 2; 
int result_i = 4 * (nrC/n); /* 4*(3/2) = 4*1 = 4 !!! */ 
int result_d = 4 * ((double)nrC/n); /* 4*(3.0/2) = 4*1.5 = 6 !!! */ 
2

Он отличает (это имя) значение nrC в двойное значение. Сама переменная не изменяется.

Смежные вопросы