www.digitalmars.com         C & C++   DMDScript  

D - scope of variables in do-while

reply "Robert" <no spam.ne.jp> writes:
I sometimes want to write as:

do {
    int c = getchar();
} while(!(c == EOF || c == '\n'));

but condition expression of the 'while' is out of scope of 'c'.
So, I must write as:

int c;
do {
    c = getchar();
} while(!(c == EOF || c == '\n'));

Though, I think the former is better than the latter.
Jan 07 2004
next sibling parent reply Ilya Minkov <minkov cs.tum.edu> writes:
I vote for it! I just ran over the same in C++ today!

do scope should extend to while.

Robert wrote:
 do {
     int c = getchar();
 } while(!(c == EOF || c == '\n'));

Jan 07 2004
parent "Sean L. Palmer" <palmer.sean verizon.net> writes:
Yes.  I often wish for this.

Sean

"Ilya Minkov" <minkov cs.tum.edu> wrote in message
news:bthssm$2s00$1 digitaldaemon.com...
 I vote for it! I just ran over the same in C++ today!

 do scope should extend to while.

 Robert wrote:
 do {
     int c = getchar();
 } while(!(c == EOF || c == '\n'));


Jan 11 2004
prev sibling next sibling parent "Matthew" <matthew.hat stlsoft.dot.org> writes:
How about

do with (int c)
{
    c = getchar();
} while(!(c == EOF || c == '\n'));


Walter, would that be unambiguously parseable?


"Robert" <no spam.ne.jp> wrote in message
news:bthsbo$2raj$1 digitaldaemon.com...
 I sometimes want to write as:

 do {
     int c = getchar();
 } while(!(c == EOF || c == '\n'));

 but condition expression of the 'while' is out of scope of 'c'.
 So, I must write as:

 int c;
 do {
     c = getchar();
 } while(!(c == EOF || c == '\n'));

 Though, I think the former is better than the latter.

Jan 07 2004
prev sibling next sibling parent reply Heretic <Heretic_member pathlink.com> writes:
In article <bthsbo$2raj$1 digitaldaemon.com>, Robert says...
I sometimes want to write as:

do {
    int c = getchar();
} while(!(c == EOF || c == '\n'));

I also vote ;) for this... i wish it was this way everytime i write a do-while loop :)
Jan 07 2004
parent "Sean L. Palmer" <palmer.sean verizon.net> writes:
while is somewhat ambiguous anyway.  Why not go ahead and add until?

{
    int c=getchar();
} until (c > 32);

Or it could also start with do

do { } until (false);

Just prevents a bit of logical negation, may make some source code a wee bit
clearer in intent.

Sean

"Heretic" <Heretic_member pathlink.com> wrote in message
news:bti7kf$bou$1 digitaldaemon.com...
 In article <bthsbo$2raj$1 digitaldaemon.com>, Robert says...
I sometimes want to write as:

do {
    int c = getchar();
} while(!(c == EOF || c == '\n'));

I also vote ;) for this... i wish it was this way everytime i write a

 loop :)

Jan 11 2004
prev sibling parent J Anderson <REMOVEanderson badmama.com.au> writes:
Robert wrote:

I sometimes want to write as:

do {
    int c = getchar();
} while(!(c == EOF || c == '\n'));

but condition expression of the 'while' is out of scope of 'c'.
So, I must write as:

int c;
do {
    c = getchar();
} while(!(c == EOF || c == '\n'));

Though, I think the former is better than the latter.

  

loop, but that's a bit picky.
Jan 07 2004