математическая функция для округления - PullRequest
0 голосов
/ 09 мая 2019

Что означает (rounding/=10.0;)?Почему слеш?

Ответы [ 2 ]

6 голосов
/ 09 мая 2019

rounding /= 10.0; означает:

  1. конвертировать rounding в double (если это уже не double или long double),
  2. разделить на double 10.0,
  3. и присвойте частное обратно rounding.Если rounding - это целое число, которое усекает дробную часть частного.

Если rounding - это пользовательский тип с перегруженным operator/=, который может означать что-либо еще.

4 голосов
/ 09 мая 2019

Это оператор присваивания . Это один из составных операторов присваивания.

Так что, если у нас есть

a /= b

тогда это точно так же, как поведение выражения

a = a / b

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


Так что в этом случае

rounding/=10.0;

означает

rounding = rounding / 10.0;

Причина, по которой он, вероятно, имеет 10.0, а не 10, заключается в том, что целочисленное деление исключается и вместо него используется .


Что еще нужно иметь в виду, это то, что /= является оператором с меньшим приоритетом , чем /, и что /= работает справа налево, тогда как / работает слева- направо.

На практике это означает, что что-то вроде

a /= 1 / 3 / 3;

будет таким же, как

a /= (1 / (3 / 3));

, что, учитывая, что = также имеет тот же уровень приоритета, что и /=, совпадает с

a = (a / (1 / (3 / 3)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...