В соответствии с этим здесь

Левый будет оцениваться до правого ...

Но у меня есть проект, где:

int[] df = null;  //GetDataFrame()
int xIndex =  12; //GetLearningIndex()
df[0] = 1 % GetLearningIndex();

И я понял, что когда GetDataFrame возвращает ноль , а GetLearningIndex возвращает ноль, я получаю System.DivideByZeroException, который я ожидал в соответствии с подобным { {X1}} ... есть причина почему ??

-4
ΦXocę 웃 Пepeúpa ツ 24 Апр 2017 в 10:17

2 ответа

Вы на самом деле ссылаетесь на неправильный документ. Как упоминалось в фактическом операторе присваивания < em> оценивается наконец. Таким образом, ваш вызов метода, а также математическая операция (% оцениваются перед уступкой assignemtn в DivideByZeroException.

Кроме того, оператор присваивания оценивается справа налево, в отличие от всех других двоичных, которые оцениваются слева направо:

За исключением операторов присваивания, все бинарные операторы являются левоассоциативными, что означает, что операции выполняются слева направо. Например, x + y + z оценивается как (x + y) + z. Операторы присваивания и условный оператор (? :) являются ассоциативными справа, что означает, что операции выполняются справа налево. Например, x = y = z оценивается как x = (y = z).

0
HimBromBeere 24 Апр 2017 в 07:43

Левые операнды вычисляются первыми, когда дело доходит до математических операций. В вашем случае вы вызываете метод, который возвращает значение: GetLearningIndex(), значение которого всегда будет оцениваться перед любой математической операцией, с которой вы его используете.

4
Koby Douek 24 Апр 2017 в 07:19