Re: order of evaluation
From: msalters (Michiel.Salters_at_logicacmg.com)
Date: 02/15/05
- Next message: Rohit: "Deleting memory allocated to the derived class"
- Previous message: msalters: "Re: private inheritance from std::string error"
- In reply to: Sumit Rajan: "Re: order of evaluation"
- Next in thread: Sumit Rajan: "Re: order of evaluation"
- Reply: Sumit Rajan: "Re: order of evaluation"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: 15 Feb 2005 04:56:06 -0800
Sumit Rajan wrote:
> "ASobol" <sobol@mccme.ru> wrote in message
> news:1108466861.501664.262270@o13g2000cwo.googlegroups.com...
> > //code.begin()
> > #include <iostream>
> >
> > int g (int i)
> > {
> > static const int j = i;
> > return j;
> > }
> >
> > int main (int, char**)
> > {
> > std::cout << g(0) << g(1) << g (2) << g(3);
>
> The compiler is allowed to determine the order in which the 4 calls
to g()
> are executed.
Yes, but it may not execute them concurrently (unless you cannot detect
it, of course. "as if"-rule ). One call must be made first. It may be a
different choice on every run, though.
> > Is output of this program undefined due to C++ standart?
>
> Undefined behaviour.
Wrong, unspecified. There are proper sequence points between the
calls, the only thing unspecified is the order of sequence points.
No variable is modified twice between sequence points. In fact,
the only variable modified is static const int j, which by
definition cannot be modified twice at all.
Regards,
Michiel Salters
- Next message: Rohit: "Deleting memory allocated to the derived class"
- Previous message: msalters: "Re: private inheritance from std::string error"
- In reply to: Sumit Rajan: "Re: order of evaluation"
- Next in thread: Sumit Rajan: "Re: order of evaluation"
- Reply: Sumit Rajan: "Re: order of evaluation"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|