Что нового

Возможно ли присвоение двух значений одной переменной?

Dk

Новичок
Сообщения
358
Репутация
2
Прошу не судить меня за такой вопрос строго.
Смысл такой, я написал

Local $a= 1 or 2

Программа ошибок не выдаёт. Работает.
Но когда доходит до:

If $b=$a then ....

а $b в этот момент равно к примеру 9, то скрипт всё равно выполняет то что стоит после then.

Вопрос. Корректно ли я сделал. Или мне нужно было всё же сделать две переменные $а1=1, $а2=2. Если не корректно, то почему тогда программа не выдаёт ошибку? И как она тогда воспринимает, то что я написал?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
If 9 = true then, вот что сравнивает. Это верно. Поэтому выполняется then
Код:
MsgBox(0, '', 1 or 2)
 
Автор
D

Dk

Новичок
Сообщения
358
Репутация
2
inververs сказал(а):
If 9 = true then, вот что сравнивает. Это верно. Поэтому выполняется then
Код:
MsgBox(0, '', 1 or 2)

Я извиняюсь, но всё же как так?
оно же не true

if 9 = 1 or 2 then

if $b = $a then
Но как оно может выполнять если 9 не равно 1 и не равно 2 ?? Оно должно выполнять только если 9 = 9

Хромает моя логика. Но да, всё написали верно. Но получается совершенно другой смысл, еже ли я напишу

$a = 1
$a1= 2
$b = 9

$b = $a or $b = $a1Then
....
EndIf
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
В autoit нельзя так писать if $b = $a or $a1 Then, пиши так if $b = $a or $b = $a1
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Dk
Смотри приоритеты вычислений. Например Or вычисляется последним, значит 9 = 1 or 2 будет вычисляться как (9 = 1) or 2, то есть 9 = 1 равно False, далее False or 2 приводится к логическому преобразованию False or True, в такой комбинации если имеется хоть один True, то результат будет True, а чтобы результатом было False нужно чтобы оба были False, то есть False or False. True является всё кроме 0 или пустой строки.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Dk

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх