Hello Hannes,
Thank you for reporting this problem. I fix this in
Cint5.15.11.
Masaharu Goto
>Date: Wed, 29 Aug 2001 12:31:36 +0200
>From: Fons Rademakers <Fons.Rademakers@cern.ch>
>To: Masaharu Goto <MXJ02154@niftyserve.or.jp>
>Subject: [Fwd: [ROOT] problem with operator precedence]
>
>Hi Masa,
>
> can you have a look at this. Thanks.
>
>Cheers, Fons.
>
>--
>Org: CERN, European Laboratory for Particle Physics.
>Mail: 1211 Geneve 23, Switzerland
>E-Mail: Fons.Rademakers@cern.ch Phone: +41 22 7679248
>WWW: http://root.cern.ch/~rdm/ Fax: +41 22 7679480
>-----------------------------------------------------------------------------
-
--
>Date: Wed, 29 Aug 2001 10:01:00 +0200
>From: Hannes SAKULIN <Hannes.Sakulin@cern.ch>
>Reply-To: Hannes SAKULIN <Hannes.Sakulin@cern.ch>
>To: ROOT Talk mailing list <roottalk@cern.ch>
>Subject: [ROOT] problem with operator precedence
>
>Hi!
>I'll try to ask this question again, here as nobody seems to read the
>newsgroup root.cern.ch.
>Hannes.
>
>-------- Original Message --------
>Subject: problem with operator precedence?
>Date: Mon, 30 Jul 2001 15:45:07 +0200
>From: Hannes SAKULIN <Hannes.Sakulin@cern.ch>
>Organization: CERN
>Newsgroups: cern.root
>
>Hi,
>I am observing a very strange behavior with root Version 3.01/06 12 July
>2001 (from na49). It seems like the precedence of && over || is not
>followed in all
>cases.
>
>The if expressions below should always evaluate to true but for some
>reason the second one evaluates to false when I call the function
>(RunGMT1_cutJul2001()) from within a loop.
>
>The output of the test program looks like this:
>
>root [8] .x xx.C
>TRUE w. brackets true without
>TRUE w. brackets false without
>*** oops !!! *** eta = 0.9
>TRUE w. brackets false without
>*** oops !!! *** eta = 0.9
>
>
>Does anybody have an ides what is going wrong in my little example?
>
>Best Regards, Hannes Sakulin.
>
>
>void xx ()
>{
> RunGMT1_cutJul2001();
> for (int iev = 0; iev <2; iev++) {
> RunGMT1_cutJul2001();
> }
>}
>
>void RunGMT1_cutJul2001()
>{
> float eta = .9;
> bool xx;
> if ( 1 && ( (eta > 0.98 && eta < 1.02) ||
> (eta > 1.38 && eta < 1.42) ||
> (eta > 0.88 && eta < 0.92) )) {
> cout << "TRUE w. brackets " ;
> xx=true;
> }
> else {
> cout << "FALSE w. brackets " ;
> xx=false;
> }
>
> if (1 && ( eta > 0.98 && eta < 1.02 ||
> eta > 1.38 && eta < 1.42 ||
> eta > 0.88 && eta < 0.92 ) ) {
> cout << "true without " << endl;
> }
> else
> {
> cout << "false without" << endl;
> if (xx) cout << "*** oops !!! *** eta = " << eta << endl;
>
> }
>}
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:59 MET