On Mon, Jan 25, 2016 at 01:47:46PM +0100, Didier Kryn wrote:
> Le 25/01/2016 13:23, Rainer Weikusat a écrit :
> >     while (*r) if (*r++ == '/') n = r;
> 
>     Does it mean
> 
>     while (*r)
>       {
>         if (*r == '/')
>       {
>            n = r;
>            r++;
>         }
>       }
> 
> or
> 
>     while (*r)
>       {
>         if (*r == '/')
>       {
>            r++;
>            n = r;
>         }
>       }

Neither.  The incrementation in the original is not condiitional on 
the rquality test.  Which means that in the original, n gets assigned
the address of the character *after* the last '/' found.

In the other versions you get an infinite loop as soon as you 
encounter a character that isn't '/'.

-- hendrik

> 
> 
>     I think the second answer is the good one. It is more readable
> and less error-prone than your example and the compiler will produce
> exactly the same instructions. You don't need to do the work of the
> compiler; it does it better. Better concentrate on writing programs
> easier to read and less error-prone. These pre-increment and
> post-increment instructions should be deprecated - I already
> advocated that on this list, although it is not the place :-)
> 
>     The reason why seasonned programmers prefer the kind of
> expression you wrote, with post-increment, is a perfect example of a
> style dictated by pure aesthetics. This an error I used to make when
> I was younger, but, with age and learning, I have found true reasons
> to do otherwise.
> 
>     Didier
> 
>     Didier
> 
> _______________________________________________
> Dng mailing list
> Dng@lists.dyne.org
> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng
_______________________________________________
Dng mailing list
Dng@lists.dyne.org
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng

Reply via email to