Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #102798
| From | Tim Rentsch <txr@alumni.caltech.edu> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: while loop condition doesn't work |
| Date | 2017-01-30 12:51 -0800 |
| Organization | A noiseless patient Spider |
| Message-ID | <kfnbmuoff0p.fsf@x-alumni2.alumni.caltech.edu> (permalink) |
| References | (3 earlier) <87pojhbw2h.fsf@bsb.me.uk> <d4616907-128c-442d-b29e-82bf47b4e83d@googlegroups.com> <o5tcfb$ap3$1@dont-email.me> <o5tf8a$lpn$1@dont-email.me> <o5tfrf$o7q$1@dont-email.me> |
Richard Heathfield <rjh@cpax.org.uk> writes:
> On 20/01/17 16:54, David Brown wrote:
>> On 20/01/17 17:06, Richard Heathfield wrote:
>>
>>> /* if we're just at a field boundary, we
>>> want to move to just past that boundary.
>>> If we're at the end of the string,
>>> then two things happen: (1) we can't be
>>> sure that it's legal to move past the '\0'
>>> AND (2) there is in any case nothing more
>>> to convert.
>>>
>>> So if we're not at '\0', we want ptr to
>>> point to not_converted + 1. Otherwise, we
>>> want ptr to point to not_converted (which will
>>> terminate the loop).
>>>
>>> In C, the result of a condition is either 0
>>> (false), or 1 (true), and this happens to map
>>> precisely onto what we want. So we can do this:
>>> */
>>>
>>> ptr = not_converted + (*not_converted != '\0');
>>
>> And how is that better than:
>>
>> if (*not_converted != '\0') {
>> ptr = not_converted + 1;
>> } else {
>> ptr = not_converted;
>> }
>
> That was in fact my first version (apart from the cuddled 'else'). But
> the duplication of code offended my sense of elegance, so I changed it
> and added the comment to explain exactly how I'd arrived at it.
I share the opinion that the single statement form is better
here.
> Normally, I wouldn't bother with the comment, because to me the code
> is obvious. But I (correctly) guessed that Alla wouldn't be familiar
> with that idiom, so I took the time to explain it.
This brings up what I think is a more interesting point. In
writing programs for students, it's fairly common to use comments
not because the author thinks the program needs it, but because
it is throught the students need it. Unfortunately this habit
frequently leads to students thinking that sort of commenting
style is how programs should normally be written. That's bad and
even worse self-perpetuating. To fix it we should stop writing
such "educational" comments in any example code, including
(especially) code written with an educational purpose in mind.
Please consider putting any educational commentary outside the
actual code, rather that giving it as comments inside the code.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 01:24 -0800
Re: while loop condition doesn't work mark.bluemel@gmail.com - 2017-01-20 03:29 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-20 12:19 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 05:12 -0800
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-20 13:17 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 05:20 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-20 15:07 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 05:31 -0800
Re: while loop condition doesn't work Manfred <noname@invalid.add> - 2017-01-20 15:23 +0100
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-20 15:16 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 07:45 -0800
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-20 16:06 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 08:37 -0800
Re: while loop condition doesn't work David Brown <david.brown@hesbynett.no> - 2017-01-20 17:54 +0100
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-20 17:04 +0000
Re: while loop condition doesn't work David Brown <david.brown@hesbynett.no> - 2017-01-20 19:08 +0100
Re: while loop condition doesn't work Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-30 12:51 -0800
Re: while loop condition doesn't work Keith Thompson <kst-u@mib.org> - 2017-01-30 14:09 -0800
Re: while loop condition doesn't work supercat@casperkitty.com - 2017-01-30 14:57 -0800
Re: while loop condition doesn't work Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-01 21:31 -0800
Re: while loop condition doesn't work Keith Thompson <kst-u@mib.org> - 2017-02-02 10:01 -0800
Re: while loop condition doesn't work Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-04 00:22 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-20 19:12 +0000
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-23 10:54 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 23:22 -0800
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-23 11:02 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-21 01:22 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-21 11:00 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-21 08:35 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-21 17:17 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-21 09:32 -0800
Re: while loop condition doesn't work Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-20 19:16 +0000
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-23 11:03 +0000
Re: while loop condition doesn't work David Brown <david.brown@hesbynett.no> - 2017-01-20 14:34 +0100
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 07:40 -0800
Re: while loop condition doesn't work Richard Heathfield <rjh@cpax.org.uk> - 2017-01-20 15:47 +0000
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 08:26 -0800
Re: while loop condition doesn't work David Brown <david.brown@hesbynett.no> - 2017-01-20 18:01 +0100
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 09:26 -0800
Re: while loop condition doesn't work David Brown <david.brown@hesbynett.no> - 2017-01-20 19:02 +0100
Re: while loop condition doesn't work Alla _ <modelling.data@gmail.com> - 2017-01-20 10:13 -0800
Re: while loop condition doesn't work Malcolm McLean <malcolm.mclean5@btinternet.com> - 2017-01-21 05:36 -0800
csiph-web