GPinzone Posted October 30, 2015 Posted October 30, 2015 (edited) I checked the documentation page here: https://www.autoitscript.com/autoit3/docs/intro/lang_operators.htmThe precedence list seems to imply "And" and "Or" have equal precedence, but usually "And" has higher precedence than "Or."Opt('MustDeclareVars', 1) Local $x = True, $y = True, $z = False If $x Or $y And $z Then MsgBox(0, "", "True") Else MsgBox(0, "", "False") EndIfIf interpreted as $x Or ( $y And $z ) it should be "True Or ( True And False )" resulting in a True but it comes out as False probably because it does the "Or" operation first. Why does AutoIt have different precedence for "And" and "Or" logical operators than other popular languages? Obviously, this affects short circuiting, too. Edited October 30, 2015 by GPinzone Gerard J. Pinzonegpinzone AT yahoo.com
BrewManNH Posted October 30, 2015 Posted October 30, 2015 Operator precedence is interpreted from left to right, which is the same in all languages. That line is interpreted asIt will be true if ($x or $y is true) and $z is trueSo unless both halves on either side of the And is true, $x Or $y on one side and And $z on the other, it's going to be false. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
GPinzone Posted October 30, 2015 Author Posted October 30, 2015 Left to right does not override operator precedence.For C: http://en.cppreference.com/w/c/language/operator_precedenceFor VB: https://msdn.microsoft.com/en-us/library/fw84t893.aspxAutoIt deviates from this norm. Gerard J. Pinzonegpinzone AT yahoo.com
Developers Jos Posted October 30, 2015 Developers Posted October 30, 2015 Believe "And" and "Or" don't have preference over each other, also in the helpfile documented like that, hence the left to right. Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
GPinzone Posted October 30, 2015 Author Posted October 30, 2015 Believe "And" and "Or" don't have preference over each other, also in the helpfile documented like that, hence the left to right. JosThat's the problem, not the solution. Gerard J. Pinzonegpinzone AT yahoo.com
jchd Posted October 30, 2015 Posted October 30, 2015 The solution is always to use parenthesis to force the semantic you want and ease future code maintainance. This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe hereRegExp tutorial: enough to get startedPCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta. SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)
BrewManNH Posted October 30, 2015 Posted October 30, 2015 It's not a "problem" it's a fact of how AutoIt works, you need to learn how it works, and work with it that way.And and Or have equal precedence in AutoIt, just as * and / have equal precedence. In other languages they don't, but you're not using other languages, you're using AutoIt. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
GPinzone Posted October 30, 2015 Author Posted October 30, 2015 It's not a "problem" it's a fact of how AutoIt works, you need to learn how it works, and work with it that way.And and Or have equal precedence in AutoIt, just as * and / have equal precedence. In other languages they don't, but you're not using other languages, you're using AutoIt.What is the advantage to implement it different from every major language? Have you thought about swapping rows and columns for arrays to be more like Fortran rather than every other modern programming language on the planet? No reason. Just for fun. Just document it. That absolves everything. Gerard J. Pinzonegpinzone AT yahoo.com
Developers Jos Posted October 30, 2015 Developers Posted October 30, 2015 That's the problem, not the solution.Lovely way of communication which reminds me of somebody.Make a proposal for change in our ticket system when you insist.Jos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
UEZ Posted October 30, 2015 Posted October 30, 2015 Probably what the op means is the order of the operations without using brackets. Similar to 4 + 5 * 6.See https://en.wikipedia.org/wiki/Order_of_operations Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Developers Jos Posted October 30, 2015 Developers Posted October 30, 2015 This is what it is at this moment and think we can close this discussion now. Any other emotions are really irrelevant. Quote helpfile:When more than one operator is used in an expression the order in which things happen is controlled by operator precedence. The precedence used in AutoIt is given below. Where two operators have the same precedence the expression is evaluated left to right. From highest precedence to lowest: Not ^ * / + - & < > <= >= = <> == And OrJos SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now