On 13/05/2015 19:20, Joe Taylor wrote:

Hi Joe,
> Fussy compilers!
The warning is because so many people don't learn the operator 
precedence and associativity rules and often make mistakes with complex 
expressions. They tend to apply English language rules rather  than the 
stricter, unambiguous and, explicit C/C++ rules. This is one reason I 
prefer the tokens '!', '&&' and, '||' over the tokens 'not', 'and' and, 
'or' for these logical operations. Also the other alternative operators 
are just plain unintuitive, for example 'and' is logical yet 'and_eq' is 
bitwise but then 'not' is logical yet 'not_eq' is also logical. The 
alternative operators are a design by committee mess IMHO and the 
original C operators are just fine.
>
> I give up.  Would anyone like to take a crack at making the following
> warning message go away?  It arises on line 1752 of mainwondow.cpp in
> the v1.6.1 branch.
>
> C:\JTSDK\src\wsjtx_exp\mainwindow.cpp: In member function 'void
> MainWindow::guiUpdate()':
> C:\JTSDK\src\wsjtx_exp\mainwindow.cpp:1752:32: warning: suggest
> parentheses around '&&' within '||' [-Wparentheses]
>
> if(m_auto and (m_pctx>0) and (m_txNext or ((m_nrx==0) and (m_ntr!=-1)))
>      or (m_auto and (m_pctx==100))) {
The minimum number of parentheses without changing the meaning is:

       if(m_auto and m_pctx>0 and (m_txNext or m_nrx==0 and m_ntr!=-1)
          or m_auto and m_pctx==100) {

but the compiler would prefer you to write:

       if((m_auto and m_pctx>0 and (m_txNext or (m_nrx==0 and m_ntr!=-1)))
          or (m_auto and m_pctx==100)) {

all the above expressions are equivalent.

There is never any issue IMHO in adding extra parenthesis although 
breaking complex expressions into separate statements or even functions 
is probably best in the long run. Adding parenthesis around relational 
operator expressions is not common practice as almost all understand 
they all have higher precedence than logical operators. OTOH mixing 
bitwise and relational operators is a minefield and generous helpings of 
parentheses are recommended.
>       -- Joe
73
Bill
G4WJS.

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to