Thread overview
single loop copy in D
Mar 02, 2018
psychoticRabbit
Mar 02, 2018
Andrea Fontana
Mar 02, 2018
Jonathan M Davis
Mar 02, 2018
Simen Kjærås
Mar 02, 2018
psychoticRabbit
March 02, 2018
trying to do this C code, in D, but getting error:
"Error: assignment cannot be used as a condition, perhaps `==` was meant?"

any help much appreciated:

------
while ((*dst++ = *src++)) {}
------
March 02, 2018
On Friday, 2 March 2018 at 09:44:20 UTC, psychoticRabbit wrote:
> trying to do this C code, in D, but getting error:
> "Error: assignment cannot be used as a condition, perhaps `==` was meant?"
>
> any help much appreciated:
>
> ------
> while ((*dst++ = *src++)) {}
> ------

You can't use this syntax inside a while/if/... to prevent mistakes due to similarity between assignment syntax (=) and comparison syntax (==)

Andrea

March 02, 2018
On Friday, March 02, 2018 09:44:20 psychoticRabbit via Digitalmars-d-learn wrote:
> trying to do this C code, in D, but getting error:
> "Error: assignment cannot be used as a condition, perhaps `==`
> was meant?"
>
> any help much appreciated:
>
> ------
> while ((*dst++ = *src++)) {}
> ------

You can't use = in a while loop's condition like that in D, regardless of what you do with parens. You'll need to refactor the code so that the assignment is done in the loop's body.

- Jonathan M Davis

March 02, 2018
On Friday, 2 March 2018 at 10:01:34 UTC, Jonathan M Davis wrote:
> On Friday, March 02, 2018 09:44:20 psychoticRabbit via Digitalmars-d-learn wrote:
>> trying to do this C code, in D, but getting error:
>> "Error: assignment cannot be used as a condition, perhaps `==`
>> was meant?"
>>
>> any help much appreciated:
>>
>> ------
>> while ((*dst++ = *src++)) {}
>> ------
>
> You can't use = in a while loop's condition like that in D, regardless of what you do with parens. You'll need to refactor the code so that the assignment is done in the loop's body.

This is of course only partly true.

while ((*dst++ = *src++) != 0) {}

works just great, and also better shows what's actually being tested for in the loop.

--
  Simen
March 02, 2018
On Friday, 2 March 2018 at 10:08:57 UTC, Simen Kjærås wrote:
>
> This is of course only partly true.
>
> while ((*dst++ = *src++) != 0) {}
>
> works just great, and also better shows what's actually being tested for in the loop.
>
> --
>   Simen

That's what I was after. Thanks!