Как не проверять лишнее условие

Автор Борис_С, 5 ноября 2025, 19:24

0 Пользователи и 1 гость просматривают эту тему.

Борис_С

Добрый день.
У меня есть условный оператор. Он включает в себя 2 условия.
Мне бы хотелось чтобы если 1-е условие не выполнялось, 2-е условие не проверялось, но как выясняется, 2-е условие проверяется всегда вне зависимости от того выполняется 1-е условие или нет.
Можно ли этим как-то управлять?

sokol92

В LO Basic (как и в VBA) приходится писать так:

Sub Test
  If cond1 Then    ' проверяем первое условие
    If cond2 Then  ' проверяем второе условие
      ' Обработка здесь
    End If
  End If   
End Sub

В Python или JS (к примеру) это будет намного короче.
Владимир.

Борис_С

Ясно. Спасибо. Не очень понятно, зачем так сделано, но тут уж мы (пользователи) ничего сделать можем.

sokol92

Владимир.

mikekaganski

В частности, потому что в Basic операторы типа And и Or - не только логические, но и побитовые (в зависимости от типа аргументов). И учитывая, что в языке может быть, что тип аргумента определяется во время выполнения (скажем, сравниваются переменные типа Variant), то пока оба аргумента не посчитаны, непонятно, как считать.

Например, True And True даст True, а 1 And 2 даст 0 (хотя при использовании что 1, что 2 с качестве логических значений они оба эквивалентны True, а 0 эквивалентен False).
С уважением,
Михаил Каганский