[C++ Question] For loop Multiple Initialization

Discussion in 'C++' started by charlie.xia.fdu@gmail.com, Nov 3, 2008.

  1. Guest

    Hi C++ users,

    for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}

    example from: http://www.tech-faq.com/iterations.shtml
    Is not valid in my eclipse cdt.
    Is there multiple initialization in C++? How can we use that?

    Thanks!

    Charlie
    , Nov 3, 2008
    #1
    1. Advertising

  2. -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    wrote:
    > Hi C++ users,
    >
    > for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}
    >
    > example from: http://www.tech-faq.com/iterations.shtml
    > Is not valid in my eclipse cdt.
    > Is there multiple initialization in C++? How can we use that?


    That way is correct:

    for (int i=0, j=10; i<5 && j<10; i++, j--) {}

    Unless I'm wrong, there's no way to initialize variables of different
    types in that part of for loop.

    Pawel Dziepak

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.9 (GNU/Linux)
    Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

    iEYEARECAAYFAkkPb5AACgkQPFW+cUiIHNo4jQCff0Shc8Rmg8IbW7OYSDPqVu5g
    7dsAoLirnTWj3mIPx2eN9mnZPUNBsYi1
    =4L+S
    -----END PGP SIGNATURE-----
    Pawel Dziepak, Nov 3, 2008
    #2
    1. Advertising

  3. Guest

    Re: For loop Multiple Initialization

    On Nov 3, 1:39 pm, Pawel Dziepak <> wrote:
    > -----BEGIN PGP SIGNED MESSAGE-----
    > Hash: SHA1
    >
    > wrote:
    > > Hi C++ users,

    >
    > > for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}

    >
    > > example from:http://www.tech-faq.com/iterations.shtml
    > > Is not valid in my eclipse cdt.
    > > Is there multiple initialization in C++? How can we use that?

    >
    > That way is correct:
    >
    > for (int i=0, j=10; i<5 && j<10; i++, j--) {}
    >
    > Unless I'm wrong, there's no way to initialize variables of different
    > types in that part of for loop.
    >
    > Pawel Dziepak

    it works!
    thanks

    >
    > -----BEGIN PGP SIGNATURE-----
    > Version: GnuPG v1.4.9 (GNU/Linux)
    > Comment: Using GnuPG with Fedora -http://enigmail.mozdev.org
    >
    > iEYEARECAAYFAkkPb5AACgkQPFW+cUiIHNo4jQCff0Shc8Rmg8IbW7OYSDPqVu5g
    > 7dsAoLirnTWj3mIPx2eN9mnZPUNBsYi1
    > =4L+S
    > -----END PGP SIGNATURE-----
    , Nov 3, 2008
    #3
  4. James Kanze Guest

    Re: For loop Multiple Initialization

    On Nov 3, 10:29 pm, "" <>
    wrote:

    > for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}


    > example from:http://www.tech-faq.com/iterations.shtml
    > Is not valid in my eclipse cdt.


    It's not valid in C++ either. Just another case of someone who
    doesn't know the language trying to write about it.

    > Is there multiple initialization in C++?


    Sort of. You can only write one declaration statement, but it
    can define multiple variables, e.g.:

    for ( int i = 0, j = 10 ; ... )

    Generally speaking, i'ld avoid it, because it is confusing to
    have multiple variables defined in the same declaration. But
    there are probably exceptions; I know that some people like:

    for ( Container::const_iterator
    current = c.begin(), end = c.end() ;
    current != end ;
    ++ current )

    I'm not that fond of it, but if you raise it to the level of a
    "standard idiom" in your code, I don't think I'd have any real
    objections.

    --
    James Kanze (GABI Software) email:
    Conseils en informatique orientée objet/
    Beratung in objektorientierter Datenverarbeitung
    9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
    James Kanze, Nov 3, 2008
    #4
  5. James Kanze Guest

    Pawel Dziepak wrote:
    > wrote:
    > > for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}


    > > example from: http://www.tech-faq.com/iterations.shtml
    > > Is not valid in my eclipse cdt.
    > > Is there multiple initialization in C++? How can we use that?


    > That way is correct:


    > for (int i=0, j=10; i<5 && j<10; i++, j--) {}


    > Unless I'm wrong, there's no way to initialize variables of
    > different types in that part of for loop.


    for ( int i = 0 , *p = &i ; ... )

    :).

    Not that I'd like to maintain code which did such things.

    --
    James Kanze (GABI Software) email:
    Conseils en informatique orientée objet/
    Beratung in objektorientierter Datenverarbeitung
    9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
    James Kanze, Nov 3, 2008
    #5
  6. Guest

    Re: For loop Multiple Initialization

    But actually I want these variables only in the scope of for loop.
    Keep the initialization and increment in the for statement is the only
    neat way I can think of.
    Isn't it?


    On Nov 4, 2:20 am, Pete Becker <> wrote:
    > On 2008-11-03 23:03:16 -0500, (blargg) said:
    >
    >
    >
    > > Pawel Dziepak wrote:
    > >> wrote:
    > >>> for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}

    >
    > >>> example from:http://www.tech-faq.com/iterations.shtml
    > >>> Is not valid in my eclipse cdt.
    > >>> Is there multiple initialization in C++? How can we use that?

    >
    > >> That way is correct:

    >
    > >> for (int i=0, j=10; i<5 && j<10; i++, j--) {}

    >
    > >> Unless I'm wrong, there's no way to initialize variables of different
    > >> types in that part of for loop.

    >
    > > I'll probably regret this, but I believe you can:

    >
    > >     double d;
    > >     int* p;
    > >     for ( char c = (d = 1.234, p = new int, 'X'); ...

    >
    > Or, less cryptically,
    >
    > double d;
    > int *p;
    > char c;
    > for (c = 'X', d = 1.234, p = new int; ...
    >
    > Now, technically, that's not initialization, but it may well be what
    > was actually meant.
    >
    > --
    >   Pete
    > Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
    > Standard C++ Library Extensions: a Tutorial and Reference
    > (www.petebecker.com/tr1book)
    , Nov 6, 2008
    #6
  7. charlie Guest

    Re: For loop Multiple Initialization

    On Nov 7, 1:08 am, (blargg) wrote:
    > wrote:
    > > On Nov 4, 2:20 am, Pete Becker <> wrote:
    > > > On 2008-11-03 23:03:16 -0500, (blargg) said:
    > > > > Pawel Dziepak wrote:
    > > > >> wrote:
    > > > >>> for(int i=0,int j=10 ; i<5&&j<10 ; i++ , j--) {}

    >
    > > > >>> example from:http://www.tech-faq.com/iterations.shtml
    > > > >>> Is not valid in my eclipse cdt.
    > > > >>> Is there multiple initialization in C++? How can we use that?

    >
    > > > >> That way is correct:

    >
    > > > >> for (int i=0, j=10; i<5 && j<10; i++, j--) {}

    >
    > > > >> Unless I'm wrong, there's no way to initialize variables of different
    > > > >> types in that part of for loop.

    >
    > > > > I'll probably regret this, but I believe you can:

    >
    > > > >     double d;
    > > > >     int* p;
    > > > >     for ( char c = (d = 1.234, p = new int, 'X'); ...

    >
    > > > Or, less cryptically,

    >
    > > > double d;
    > > > int *p;
    > > > char c;
    > > > for (c = 'X', d = 1.234, p = new int; ...

    >
    > > > Now, technically, that's not initialization, but it may well be what
    > > > was actually meant.

    >
    > > But actually I want these variables only in the scope of for loop.
    > > Keep the initialization and increment in the for statement is the only
    > > neat way I can think of.
    > > Isn't it?

    >
    > The for loop is for common loops that have a single variable that is
    > initialized, tested, and advanced. If it were made to handle every
    > possible loop, it would lose its usefulness. In fact, such a more general
    > loop construct already exists as a combination of a compound statement
    > ({}) with a while or do-while loop in it. What do you gain by trying to
    > jam complicated things into a for loop anyway?
    >
    > Also, please don't top-post, and don't quote signatures (see
    > <http://www.netmeister.org/news/learn2quote.html>).


    Good to know. Thanks all.
    charlie, Nov 14, 2008
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JKop
    Replies:
    10
    Views:
    937
  2. Matthias Kaeppler
    Replies:
    2
    Views:
    437
    Victor Bazarov
    Jul 18, 2005
  3. Replies:
    6
    Views:
    458
    Ron Natalie
    Dec 11, 2005
  4. toton
    Replies:
    5
    Views:
    930
    Victor Bazarov
    Sep 28, 2006
  5. Isaac Won
    Replies:
    9
    Views:
    364
    Ulrich Eckhardt
    Mar 4, 2013
Loading...

Share This Page