Приоритет операции приведения в C#
будут ли различия ниже иметь значение значительно В C#?
int a, b;
double result;
result = (double)a / b;
result = a / (double)b;
result = (double)a / (double)b;
какой из них вы используете?
3 ответов
бросание произойдет до разделения.
в ваших примерах не имеет значения, какой из них вы делаете, как если бы один операнд был двойным, среда выполнения также будет бросать / преобразовывать другой в двойной.
Это похоже на микро-оптимизацию - не то, о чем стоит беспокоиться или иметь дело, если измерения не показывают, что это действительно узкое место.
Я делаю так:
result = (double)a / (double)b;
это может быть строго ненужным, но обычно я хочу сделать обязательно что он не будет делать целочисленное деление, и я действительно не хочу помнить конкретные правила для этого сценария, поэтому легче (если еще несколько нажатий клавиш) быть явным.
Я (double)a / b
потому что я представляю int как нечто неделимое, как камень или что-то еще. Когда его бросают в двойник, он становится делимым, как пирог. Вы можете разделить 3.0 торты на четыре части, но вы не можете разделить три камня на 4.0 части. Или что-то. В этом есть смысл?