PureBytes Links
Trading Reference Links
|
Hi Tomasz,
Technically, increment and decrement
unary operators are assignment operators as well as the unary
minus (-) and unary plus (+) operators:
In C++, the unary minus and
unary plus operators have a different level of precedence. The
same holds for the prefix and postfix form of the
increment/decrement operators.
Unfortunately, that understanding is
confused and misrepresented in many C/C++ books!
For your reference, you may refer
to Operator Precedence and Associativity in MSDN
Library Visual Studio 6.0 or, otherwise, please take a look at the
table below, which I obtained from that library.
<FONT face="Courier New"
size=2>
Regards,
Udo<FONT
face=Verdana size=2>
<FONT
face=Arial color=#0000ff size=2>Operator Precedence and
Associativity
The table below lists the C and C++
operators and their precedence and associativity values. The highest precedence
level is at the top of the table.
<FONT face=Arial color=#0000ff
size=2>Symbol
Name
or Meaning
<FONT face=Arial color=#0000ff
size=2>Associativity
Highest
Precedence
++
<FONT face=Arial color=#0000ff
size=2>Post-increment
Left to
right
<FONT face=Arial color=#0000ff
size=2>--
<FONT face=Arial color=#0000ff
size=2>Post-decrement
( )
Function
call
[ ]
Array
element
<FONT
color=#0000ff>->
Pointer to structure
member
.
Structureor union
member
++
<FONT face=Arial color=#0000ff
size=2>Pre-increment
Right to
left
<FONT face=Arial color=#0000ff
size=2>--
<FONT face=Arial color=#0000ff
size=2>Pre-decrement
!
Logical
NOT
~
Bitwise
NOT
<FONT face=Arial color=#0000ff
size=2>-
Unary
minus
+
Unary plus
&
Address
*
<FONT face=Arial color=#0000ff
size=2>Indirection
sizeof
Size in
bytes
new
Allocate program
memory
delete
Deallocate program
memory
(type)
Type cast[for
example, (float) i]
<FONT
color=#0000ff>.*
Pointer to member
(objects)
Left to
right
<FONT
color=#0000ff>->*
Pointer to member
(pointers)
*
Multiply
Left to
right
/
Divide
%
Remainder
+
Add
Left to
right
<FONT face=Arial color=#0000ff
size=2>-
Subtract
<<
Left shift
Left to
right
>>
Right
shift
<
Less than
Left to
right
<=
Less thanor equal
to
>
Greater
than
>=
Greater than or
equal to
==
Equal
Left to
right
!=
Not equal
&
Bitwise
AND
Left to
right
^
Bitwise exclusive
OR
Left to
right
|
Bitwise OR
Left to
right
&&
Logical
AND
Left to
right
||
Logical OR
Left to
right
?
:
<FONT face=Arial color=#0000ff
size=2>Conditional
Right to
left
=
Assignment
Right to
left
*=, /=, %=, +=,
-=, <<=, >>=, &=, ^=, |=
Compound
assignment
,
Comma
Left to
right
Lowest
Precedence
<FONT face=Arial color=#0000ff
size=2>
<BLOCKQUOTE
>
-----Ursprüngliche Nachricht-----
<DIV
>Von:
Tomasz Janeczko
An: <A title=amibroker@xxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Gesendet: Dienstag, den 30. April 2002
16:53 Uhr
Betreff: Re: [amibroker] Re: Are your
Composites accurate???
Richard,I just checked the parser code.You are
right unary minus has precedence over exponentiation.I think I should
change this behaviour to match documentation.Best regards,Tomasz
Janeczkoamibroker.com----- Original Message -----From: "Richard
Alford" <<A
href="">richard.alford@xxxx>To:
<<A
href="">amibroker@xxxxxxxxxxxxxxx>Sent:
Tuesday, April 30, 2002 3:27 PMSubject: Re: [amibroker] Re: Are your
Composites accurate???> Tomasz,>> I don't see
anything unusual or surprising in what you say. The only>
issue/question I have, and it is purely academic, is whether your>
documentation is, in fact, in minor error by showing exponentiation as>
higher precedence than the unary minus. Just for curiosity, can you give
an> example where exponentiation has higher precedence? I have yetto
see> anything in this thread that gives a surprising result to
me.>> Cheers,>> Richard> ----- Original
Message -----> From: "Tomasz Janeczko" <<A
href="">amibroker@xxxx>> To: <<A
href="">amibroker@xxxxxxxxxxxxxxx>>
Sent: Tuesday, April 30, 2002 3:36 AM> Subject: Re: [amibroker] Re: Are
your Composites accurate???>>> > Richard,>
>> > The - (unary minus) operator negates the value of the
operand.> >> > The result of applying the unary minus
operator to a signed operand is> > equivalent to the negative
promoted type of the operand.> >> > For example, if
quality has the value 100, then -quality has the> value -100.>
>> > The unary minus has right associativity and higher
precedence than most> other> > operators (except
exponentiation)> > In the first Dimitris example the minus signis
treated as> > binary minus (regular subtraction) there fore the
result is 10 - (3^2) => 10 - 9 = 1> > In the second Dimitirs
example the minus sign follows addition> > operator. Addition
(binary plus operator) expects numbers from left and> right
side.> > This time minus is treated as unary minus operator>
> So this is evaluated as:> >> > 10 + ( (-3)^2 ) = 10 +
9 = 19> >> > (right associativity of unary minus and
precedence over binary plus> operator).> >> > Best
regards,> > Tomasz Janeczko> > amibroker.com> >
----- Original Message -----> > From: "dtsokakis" <<A
href="">TSOKAKIS@xxxx>> > To:
<<A
href="">amibroker@xxxxxxxxxxxxxxx>>
> Sent: Tuesday, April 30, 2002 9:07 AM> > Subject: [amibroker]
Re: Are your Composites accurate???> >> >> >
Richard,> > Note please that in AFL the following results are
true:> > 10-3^2=1> > 10+-3^2=19> > !!!>
> Dimitris Tsokakis> > --- In <A
href="">amibroker@xxxx..., "Richard Alford" <<A
href="">richard.alford@xxxx...> wrote:> >
> not in this universe :) It may not, in fact, matter since
the> > exponentiation operator always (by some other convention?)
follows> > the operand. Actually the "unitary" is a relatively
new term (in the> > past 20 years) jumping out after I was wellout
of grad school (in> > mathematical physics) and before the
programmers began to worry about> > the difference between
subtraction and what I always interpreted as a> > simple negative
number - the computer worries about such things,> > people don't. (I
do realize the mathematical distinction has been> > around for
centuries - just ignored like most math in the real world> > until
it found a use.)> > >> > > BTW - Multiplicationand
division are not generally on the same> > level ( My Dear Aunt
Sally) for the antiques in the group; although,> > when in doubt
most simply just hammer in parens by reflex - similar> > to theway
a horse runs first and asks questions latter....> > >>
> >> > > I still think that this is a simple documentation
error on TJ's> > part , and,personally, I find that comforting
:)> > >> > > Cheers,> > >> >
> Richard> > > ----- Original Message
-----> > > From: Steve Dugas> >
> To: amibroker@xxxx...>
> > Sent: Monday, April 29, 2002 8:34 PM> >
> Subject: Re: [amibroker] Re: Are your Composites
accurate???> > >> > >> > >
It just occurred to me - maybe they are on the same level (like> >
multiplication and division), so it does the negation first because>
> it comes to it first?> > >> > >
Steve> > > ----- Original Message
-----> > > From: Steve Dugas>>
> To: <A
href="">amibroker@xxxx...> >
> Sent: Monday, April 29, 2002 9:08 PM>>
> Subject: Re: [amibroker] Re: Are your Composites
accurate???> > >> > >> >
> Hi DT,> > >> >
> I must be missing something. I tried your plot,
and -1^10 did> > evaluate to 1, like you say. But, if
exponentiation takes precedence> > over negation (as shown in your
table), how come it doesnt evaluate> > to -1, like this? :>
> >> > > -1^10 =
-(1^10) = -(1) = -1> > >>>
> Steve> >
> ----- Original Message ----->
> > From: dtsokakis> >
> To: <A
href="">amibroker@xxxx...> >
> Sent: Monday, April 29, 2002 12:16
PM> > > Subject: [amibroker]
Re: Are your Composites accurate???> > >> >
>> > > Herman,>
> > I really don´t know how do you
realise things.> > > Well,
-1^10 is equal to 1.> > > [It
acts like (-1)^10 because of priorities in operators**> >
> [try Plot(-1^10,"",1,1);]>
> > -1*10^10 is a huge negative
number> > > Another Amibroker
expression is -1e10, also negative enough.> >
> Your formula was not correct, because
it was excuding stocks> > with> >
> open==1 from counting.[see previous
mails to you]> > > DT>
> > **Operator precedence and the
parentheses> > > AFL supports
parentheses in formulas.> > >> >
> Parentheses can be used to control
the operation precedence> > (the> >
> order in which the operators are
calculated). AmiBroker> > always does> >
> operations within the innermost
parentheses first. When> > parentheses> >
> are not used, the precedence is as
follows (higher precedence> > listed> >
> first):> > >>
> > No Symbol Meaning> >
> 1 ^ Exponentiation> >
> 2 - Negation - Unary minus>
> > 3 * Multiplication> >
> 4 / Division> >
> 5 + Addition> >
> 6 - Subtraction> >
> 7 < Less than> >
> 8 > Greater than> >
> 9 <= Less than or equal
to> > > 10 >= Greater than
or equal to> > > 11 == Equal
to> > > 12 != Not equal
to> > > 13 NOT Logical
"Not"> > > 14 AND Logical
"And"> > > 15 OR Logical
"Or"> > > 16 = Variable
assignment operator> > >> >
> The expression> >
>> > > H + L / 2;>
> > (without parenthesis) wouldbe
calculated by AmiBroker> > as "L / 2"> >
> plus "H", since division has a higher
precedence. This would> > result> >
> in a much different value
than> > >> > >
(H + L)/2;> > >> >
> --- In <A
href="">amibroker@xxxx..., "Herman van den Bergen" <<A
href="">psytek@xxxx...>> > wrote:> >
> > > -----Original
Message-----> > > > >
From: dtsokakis [mailto:TSOKAKIS@xxxx]> >
> > > Sent: Sunday, April 28,
2002 11:13 AM> > > > >
To: amibroker@xxxx...> >
> > > Subject: [amibroker] Re:
Are your Composites accurate???> >
> > >> >
> > >> >
> > > Herman,> >
> > > I just noticed that your
EMPTY is -1^10, ie equal to 1.> >
> > > So, your equivalent formula
is> > > > > EMPTY =
1;> > > >> >
> > Just realized that -1^10 isnot
equal to 1 but is -1 * 10^10> >
> >> >
> > perhaps my code was OK
anyway?> > > >>
> > > Take care,> >
> > Herman.> >
> >> >
> >> >
> >> >
> >> >
> > > AddToComposite(IIf(Open ==
1,0,1),"~DataPresent","v",3);> >
> > > Do you have in the group of
your gif some stocks with> > open==1 ?> >
> > > This would give some
explanation.> > > > >
DT> > > > > PS Thehuge
negative symbol in AFL is -1e10> >
> > > --- In <A
href="">amibroker@xxxx..., "dtsokakis" <<A
href="">TSOKAKIS@xxxx...> wrote:> >
> > > > Of course I receive an
identical result list with your> >
> > > > EMPTY = -1^10;>
> > > > >
AddToComposite(IIf(Open ==> >
EMPTY,0,1),"~DataPresent","v",3);> >
> > > > Buy= 0;>>
> > > >
f=Foreign("~datapresent","v");> >
> > > > Filter=f!=101;>
> > > > >
AddColumn(f,"");> > > >
> > EXACTLY the same results.> >
> > > > To avoid any
misuderstanding :your formula works, I> > just think> >
> > > > Amibroker does not use
the open==EMPTY hypothesis,> > because if> >
> the> >
> > > > ADLAC is not present
on 16/4/2002, there is no> > reference for> >
> ADLAC> >
> > > > this date.>
> > > > > My opinion is
from experience, Tomasz knows how> > AddToComposite()> >
> > > > works.> >
> > > > DT> >
> > > > --- In <A
href="">amibroker@xxxx..., "Dimitris Tsokakis"> >
<TSOKAKIS@xxxx...>> >
> wrote:> >
> > > > > I respectfully
disagree. If you are not concerned> > about bar-> >
> by-> >
> > > bar> >
> > > > accuracy> >
> > > > > than you are
correct. In that case the "1" method> > works fine.> >
> As> >
> > > > long as you>
> > > > > > know that
this method will pick up holes of several> > days but> >
> that> >
> > > > it will> >
> > > > > not pick up
single bar holes.> > > >
> > >> > > >>
> >> > > > >>
> Herman,> > > > >
> > Of course we speak for daily search, bar-by-bar.> >
> > > > > I have in my^NDX
4 experimental holes on> > >
> > > > 6/1/2000 [1], 15/2/2000 [1] and 1/3/2000[2]> >
> > > > > plus the missing
ADLAC after 15/4/2002.> > >
> > > > As you see from the exploration, the population>
> > > > > > is different
from 101 exactly these dates.> >
> > > > > I do not
understand the conditions of your graph.> >
> > > > > The> >
> > > > >
AddToComposite(1,"~count","v");> >
> > > > > Buy=0;>
> > > > > > scans
bar-by-bar every stock for each date.> >
> > > > > If the stockis
present, it adds an 1 and moves to> > the next> >
> stock.> >
> > > > > If ADLAC is not
present on 16/4/2002, then the sum> > will be 100> >
> > > > > for the certain
date.> > > > > >
> It is impossible to have a 20% error, there should be> >
another> > > > > >
> reason for your results.> >
> > > > > Dimitris
Tsokakis> > > >
>> > > > >>
> > > >> >
> > >> >
> > >> >
> > > Your use of Yahoo! Groups
is subject to> > > <A
href="">http://docs.yahoo.com/info/terms/>
> > > >> >
> > >> > >>
> >> > > Your use of
Yahoo! Groups is subject to the Yahoo! Terms of> > Service.>
> >> > >> > >> >
> Your use of Yahoo! Groups is subject to the
Yahoo! Terms of> > Service.> > >> >
>> > > Yahoo!
Groups Sponsor> >
>
ADVERTISEMENT> > >> > >> > >>
> >> > > Your use of Yahoo! Groups is subject
to the Yahoo! Terms of> > Service.> >> >>
>> >> >> > Your use of Yahoo! Groups is
subject to <A
href="">http://docs.yahoo.com/info/terms/>
>> >> >> >> >> >>
>> >> >> > Your use of Yahoo! Groups is
subject to <A
href="">http://docs.yahoo.com/info/terms/>
>> >>>>>>> Your use of
Yahoo! Groups is subject to <A
href="">http://docs.yahoo.com/info/terms/>>>------------------------
Yahoo! Groups Sponsor ---------------------~-->Buy Stock for $4and
no minimums.FREE Money 2002.<A
href="">http://us.click.yahoo.com/k6cvND/n97DAA/ySSFAA/GHeqlB/TM---------------------------------------------------------------------~-> Your
use of Yahoo! Groups is subject to <A
href="">http://docs.yahoo.com/info/terms/
|