Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #29082

Re: What's new in C?

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: What's new in C?
Date 2012-12-08 12:59 -0800
Organization None to speak of
Message-ID <lnhanwntum.fsf@nuthaus.mib.org> (permalink)
References (6 earlier) <nhHws.1049820$Ak.818313@fx24.am4> <slrnkc6mr9.1jc.grahn+nntp@frailea.sa.invalid> <64Mws.748715$Bz2.563356@fx11.am4> <aihiijFmkj3U1@mid.individual.net> <bbNws.466957$Wc4.40529@fx10.am4>

Show all headers | View raw


"BartC" <bc@freeuk.com> writes:
> "Ian Collins" <ian-news@hotmail.com> wrote in message
> news:aihiijFmkj3U1@mid.individual.net...
>> BartC wrote:
>>> For example, a 3-deep nested for-loop all using 'i' as the index
>>> variable!
>>
>> You can do that in C89.
>
> Do you have an example? That is meaningful I mean.
>
> Although nothing is stopping you anyway from using the same index variable,
> because they are all the same variable, it's going to cause difficulties, so
> it doesn't happen.

What do you mean by "they are all the same variable"?

Using C99 syntax:

    for (int i = 0; i < 100; i ++) {
        for (int i = 0; i < 100; i ++) {
            // ...
        }
    }

The outer and inner "i" are two distinct objects (that happen to
have the same name).  If you say they're the same variable, then
you're using a very different definition of "variable" than I do.

> But with mixed declarations it will work, because all the 'i's are distinct.
> However, it's just confusing
>
> (What *is* a good idea, I think, is to just auto-declare for-loop variables
> anyway. Then the question of where to declare them is eliminated!)

By "auto-declare", are you referring to the new-in-C99 feature I just
demonstrated?  I wouldn't call that "auto-declaring" (unless you're
referring to automatic storage duration, but I don't think that's what
you mean).  You still need a declaration; the language just permits it
to be in the header of the for-loop.

Note that if the body of the loop doesn't need to refer to the variable,
once could argue that using the same name for both loop variables is
sensible.  (I'd still want to use distinct names.)

Some languages do provide a syntax to execute a loop N times without
creating a variable that gives you the current iteration number.  C's
for-loop provides capabilities far beyond a simple counted loop, so it
wouldn't make too much sense to add such a special case.  I suppose the
language could have had something like:

    repeat(100) {
        /* ... */
    }

but that's probably not sufficiently useful to make it a language
feature.

>> If a function is long enough for this to be a problem, you have bigger
>> things to worry about than mixed declarations and code.
>
> And if a function is short, there's less to gain from localising all the
> declarations.

What you gain is the ability to initialize a variable using information
that's not available at the top of the function (or block).  Do you
really not find that useful?

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
    Will write code for food.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-11-28 19:41 -0700
  Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-11-28 19:15 -0800
    Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-06 02:43 -0700
      Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-06 07:45 -0500
  Re: What's new in C? Noob <root@127.0.0.1> - 2012-11-29 10:36 +0100
    Re: What's new in C? Weland <weland@sdf.lonestar.org> - 2012-11-29 10:17 +0000
    Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-04 01:45 -0700
  Re: What's new in C? Weland <weland@sdf.lonestar.org> - 2012-11-29 09:48 +0000
    Re: What's new in C? David Brown <david@westcontrol.removethisbit.com> - 2012-11-29 13:50 +0100
  Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-29 05:55 -0800
    Re: What's new in C? Les Cargill <lcargill99@comcast.com> - 2012-11-29 12:48 -0600
      Re: What's new in C? Rui Maciel <rui.maciel@gmail.com> - 2012-11-30 10:46 +0000
        Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-30 05:31 -0800
          Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-11-30 14:22 +0000
          Re: What's new in C? Rui Maciel <rui.maciel@gmail.com> - 2012-11-30 15:04 +0000
            Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-11-30 16:41 +0000
              Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-11-30 11:49 -0500
              Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-30 10:12 -0800
              Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-11-30 11:12 -0800
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-11-30 22:26 +0000
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-11-30 22:36 +0000
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-11-30 23:27 +0000
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-04 01:39 -0700
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-04 00:43 -0800
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-04 03:14 -0700
                Re: What's new in C? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-12-04 12:50 +0000
                Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-12-04 05:54 -0800
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-12-04 20:51 +0000
                Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-04 16:09 -0500
                Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-04 16:19 -0500
                Re: What's new in C? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-12-04 21:45 +0000
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-12-05 01:13 +0000
                Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-04 20:36 -0500
                Re: What's new in C? Robert Wessel <robertwessel2@yahoo.com> - 2012-12-04 20:26 -0600
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-04 18:48 -0800
                Re: What's new in C? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-12-05 02:57 +0000
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-05 01:42 +0000
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-06 02:06 -0700
                Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-06 07:50 -0500
                Re: What's new in C? JohnF <john@please.see.sig.for.email.com> - 2012-12-06 13:46 +0000
                Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-06 09:39 -0500
              Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-11-30 15:52 -0500
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-04 01:53 -0700
                Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-04 08:16 -0500
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-12-04 21:18 +0000
                Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-04 18:04 -0500
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-12-05 01:19 +0000
                Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-04 21:05 -0500
                Re: What's new in C? Noob <root@127.0.0.1> - 2012-12-05 16:45 +0100
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-06 01:45 -0700
                Re: What's new in C? James Kuyper <jameskuyper@verizon.net> - 2012-12-06 08:12 -0500
                Re: What's new in C? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-12-06 21:13 +0000
                Re: What's new in C? Eric Sosman <esosman@comcast-dot-net.invalid> - 2012-12-06 09:15 -0500
                Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-12 18:28 -0700
        Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-11-30 11:22 -0800
          Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-04 03:04 -0700
  Re: What's new in C? Rui Maciel <rui.maciel@gmail.com> - 2012-11-29 18:19 +0000
    Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-29 11:41 -0800
  Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-30 20:50 +0000
    Re: What's new in C? Jens Gustedt <jens.gustedt@loria.fr> - 2012-11-30 23:35 +0100
      Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-05 03:26 +0000
        Re: What's new in C? gwowen <gwowen@gmail.com> - 2012-12-05 23:49 -0800
          Re: What's new in C? Cal Dershowitz <cal@example.invalid> - 2012-12-06 01:49 -0700
          Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-08 07:55 +0000
            Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 13:29 +0000
              Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-08 15:23 +0000
                Re: What's new in C? Martin Shobe <martin.shobe@yahoo.com> - 2012-12-08 17:46 +0000
                Re: What's new in C? Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-12-08 10:45 -0800
                Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-08 19:32 +0000
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 18:55 +0000
                Re: What's new in C? Ian Collins <ian-news@hotmail.com> - 2012-12-09 08:26 +1300
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 20:12 +0000
                Re: What's new in C? Ian Collins <ian-news@hotmail.com> - 2012-12-09 09:18 +1300
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 21:21 +0000
                Re: What's new in C? Ian Collins <ian-news@hotmail.com> - 2012-12-09 10:27 +1300
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-08 13:36 -0800
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-08 12:59 -0800
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 22:10 +0000
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-08 16:15 -0800
                Re: What's new in C? Ian Collins <ian-news@hotmail.com> - 2012-12-09 14:23 +1300
                Re: What's new in C? Ian Collins <ian-news@hotmail.com> - 2012-12-09 14:20 +1300
                Re: What's new in C? Keith Thompson <kst-u@mib.org> - 2012-12-08 11:32 -0800
                Re: What's new in C? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-12-09 02:52 +0000
                Re: What's new in C? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-12-09 02:53 +0000
                Re: What's new in C? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-08 20:08 +0000
                Re: What's new in C? "BartC" <bc@freeuk.com> - 2012-12-08 20:25 +0000

csiph-web