Перейти к основному содержимому

11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?

В: При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?

Пример:

if ygrek:
! код

end

О:

Дело в том, что как такового в QSP нет булевого типа данных. То есть операции сравнения возвращают не значения 'true' и 'false', а значения 1 (заменяет 'true') и 0 (заменяет 'false'). Это легко проверить:

*pl (3>5) & ! вернёт 0

*pl (3<5) & ! вернёт 1

Таким образом оператор if проверяет не булевое, а числовое значение. И для этого оператора есть два варианта:

  1. Если ему передаётся значение 0, значит условие не выполнено.
  2. Если ему передаётся не 0, значит условие выполнено.

Именно поэтому когда Вы передаёте оператору if просто числовое значение, он работает с ним правильно, как должен.

ygrek=6
if ygrek:
"Условие верно"
end
if no ygrek:
"Условие всё равно верно"
end

ygrek=(3>5)
if ygrek:
"Условие верно"
else
"Условие неверно"
end