for in D versus C and C++

Walter Bright newshound1 at digitalmars.com
Thu Mar 19 10:32:54 PDT 2009


BCS wrote:
>> Thu, 19 Mar 2009 06:35:37 -0400, Steve Teale wrote:
>>
>>> for (; a<b; a++);
>>>
>>> is illegal in D.
>>>
>>> Doesn't this break a lot of C and C++ code?
>>>
>> for (; a<b; a++) {}
>>
>> is legal.  I don't think that an empty statement after for is used in
>> "a lot of code."
>>
> 
> it's a trivial fix and easy to find. Heck, you hardly need to think!

No, it isn't easy to find. This is in D because a colleague of mine, who 
was an expert C programmer (the best in the company I was working for), 
came to me with:

for (xxx; i < 10; i++);
{
      ... code ...
}

and said he could not figure out why his loop executed only and exactly 
once. He'd fiddled with it for a whole afternoon. He said he must be 
missing something obvious. I said you've got an extra ; after the ). He 
smacked his head and about fell over backwards.

So it's illegal in D, along with:

    if (condition);

and similar constructs. Have to use a { } to indicate a blank statement.



More information about the Digitalmars-d mailing list