11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?
В: При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?
Пример:
if ygrek:
! код
end
О:
Дело в том, что как такового в QSP нет булевого типа данных. То есть операции сравнения возвращают не значения 'true' и 'false', а значения 1 (заменяет 'true') и 0 (заменяет 'false'). Это легко проверить:
*pl (3>5) & ! вернёт 0
*pl (3<5) & ! вернёт 1
Таким образом оператор if проверяет не булевое, а числовое значение. И для этого оператора есть два варианта:
- Если ему передаётся значение
0, значит условие не выполнено. - Если ему передаётся не
0, значит условие выполнено.
Именно поэтому когда Вы передаёте оператору if просто числовое значение, он работает с ним правильно, как должен.
ygrek=6
if ygrek:
"Условие верно"
end
if no ygrek:
"Условие всё равно верно"
end
ygrek=(3>5)
if ygrek:
"Условие верно"
else
"Условие неверно"
end