Member 12837477 Ответов: 5

Вопрос о базовом синтаксисе и приоритете C#


Привет, я новичок в c# один из вопросов в моем рабочем листе был следующим:

Что будет напечатано?
Приставка.WriteLine(35 % 4 * 3 + 2.3 - 6/4 *3 +2);

Теперь обычно это будет 8.8, но консоль говорит, что это 10.3. Я пробовал экспериментировать, вычисляя с другим приоритетом несколько других способов, но я никогда не получал 10.3 - самый близкий результат, которого я достиг, был 10.8.

может ли кто-нибудь опубликовать пошаговое описание того, как консоль читает эту строку и как она достигает результата 10.3?

Что я уже пробовал:

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

5 Ответов

Рейтинг:
44

Patrice T

Цитата:
Что будет напечатано?
Console.WriteLine(35 % 4 * 3 + 2.3 - 6/4 *3 +2);

Довольно просто, приоритет говорят сначала умножения, деления и по модулю, а затем сложения и вычитания.
35 % 4 * 3 + 2.3 - 6/4 * 3 + 2
// gives
((35 % 4) * 3) + 2.3 - ((6/4) * 3) + 2
(3 * 3) + 2.3 - (1 * 3) + 2
9 + 2.3 - 3 + 2
10.3

Единственная хитрость заключается в том, что в языке Си деление с целыми числами-это целочисленное деление с целочисленным результатом.


Рейтинг:
36

PIEBALDconsult

А как бы ты еще что-нибудь раздобыл? :Д

Попробовать это:

( ( 35 % 4 ) * 3 ) + 2.3 - ( ( 6 / 4 ) * 3 ) + 2

Имейте в виду, что 6 / 4 делается с использованием целых чисел, поэтому он дает 1 скорее, чем 1.5 .


Рейтинг:
1

#realJSOP

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

0) корни и экспоненты
1) умножение и деление
2) сложение и вычитание

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


PIEBALDconsult

А модуль ( % ) - это форма деления.

#realJSOP

право

Рейтинг:
1

Richard MacCutchan

Видеть Операторы C# [^].


Рейтинг:
1

Member 12821006

Сначала приобретите знание о принципе БОДМАСА.
Затем упростите в соответствии с приоритетами БОДМАСА.