local a = true print (a и false или true), почему результат всегда будет true, независимо от того, является ли == false или a == true? - PullRequest
0 голосов
/ 06 ноября 2018

Почему не правильно? Я не могу понять.

Код:

C:\Users\Administrator>lua53
Lua 5.3.4  Copyright (C) 1994-2017 Lua.org, PUC-Rio
> local a = true print(a and false or true)
true
> local a = false print(a and false or true)
true
> local a = false print(a == true and false or true)
true
> local a = true print(a == true and false or true)
true
> local a = true print(a == false and false or true)
true
> local a = false print(a == false and false or true)
true
> local a = false print((a == false) and false or true)
true
> local a = false print(not a )
true
> local a = true print(not a )
false
>

1 Ответ

0 голосов
/ 06 ноября 2018

В Lua and и or имеют наименьший приоритет оператора , с or ниже and. Поэтому любое выражение вида X and false or true будет интерпретироваться как (X and false) or true.

Ну, все, что логично и с false есть false ; вот так логично и работает. И все, что логично или с true верно. И поскольку or стоит последним, все эти выражения являются просто слишком сложными способами сказать true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...