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

if(a > b && a > c && a > c) { //code }

Мне сказали, что он не будет оценивать остальную часть кода, если a> b. Это правда?

0
cabarclay 6 Апр 2014 в 13:35
Он не будет оценивать, если a < b, а не другой. Это называется короткое замыкание.
 – 
user456814
6 Апр 2014 в 13:38

3 ответа

Лучший ответ

Когда .Net вычисляет &&, он использует короткое замыкание : он проверяет первое выражение (a > b) и если он false ничего не делает, в случае true проверяет второй (a > c) и т. д., поэтому в вашем случае

  if(a > b && a > c && a > d) { //code }

Равно

  if (a > b) 
    if (a > c)
      if (a > d) { //code }
1
Dmitry Bychenko 6 Апр 2014 в 13:49
if(a > b && a > c && a > c)

Если a > b ложно, тогда он не будет проверять a > c. Поскольку оба должны быть верными для выполнения кода. Однако, если a > b истинно, то он также проверит a > c.

Кроме того, нет смысла использовать a > c два раза.

Если хотя бы одно из сравнений должно быть истинным, вы можете использовать оператор ||.

0
Peter Rasmussen 6 Апр 2014 в 13:38
Спасибо, не хотел добавлять это. Представьте, что вторая c — это d.
 – 
cabarclay
6 Апр 2014 в 13:40
У меня было ощущение, что это так :) Просто хотел указать на это.
 – 
Peter Rasmussen
6 Апр 2014 в 13:40

На самом деле это называется оценкой короткого замыкания, когда разные операторы имеют между собой оператор И, среда выполнения C # оценивает все выражение как ложное, если одно из операторов ложно, а затем игнорирует оценку остальных операторов.

Если вы хотите, чтобы вычислялись все выражения независимо от результата каждого из них, используйте single &, а не два &&. он будет сравнивать их по частям и заставит оценить все утверждения, чтобы определить окончательный результат.

if(a > b && a > c && a > c)

Вместо

if(a > b & a > c & a > c)//it will evaluate all the conditions before the final result

Для получения дополнительной информации проверьте это: ССЫЛКА

0
Community 23 Май 2017 в 15:20