Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #141961
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Remembering C's operator precedence rules |
| Date | 2019-03-14 16:39 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87bm2d76lu.fsf@bsb.me.uk> (permalink) |
| References | (1 earlier) <1bh8cb93bi.fsf@pfeifferfamily.net> <86sgvqr96y.fsf@mailhub.linuxsc.com> <eg5olf-gk.ln1@gangtai.home.grep.be> <getp20Ffe1gU1@mid.individual.net> <VMsiE.8585$q55.1681@fx42.iad> |
scott@slp53.sl.home (Scott Lurndal) writes: > Ian Collins <ian-news@hotmail.com> writes: >>On 14/03/2019 09:24, Wouter Verhelst wrote: >>> On 13/03/2019 19:11, Tim Rentsch wrote: >>>> Joe Pfeiffer <pfeiffer@cs.nmsu.edu> writes: >>>>> [...], and if I don't remember for sure in my own code >>>> >>>> It isn't hard to remember if one makes an effort to learn. >>>> Fifteen to thiry minutes, tops, and that's a one-time cost. >>> >>> When I was taught C in college, we had to memorize the operator >>> precedence. I tried, I really did. It's not "fifteen to thirty minutes, >>> tops". It took me several hours. I have forgotten most of that since. >> >>I just memorised the page number (48) in K&R... > > I just use parenthesis to obtain the required precedence. It is subsequently > unmistakable as to what the intent was. I hop you won't mind my saying that that's not a very interesting answer! Everyone does that because you have to sometimes. The interesting question is when, exactly when, you would add /redundant/ parentheses. I am pretty sure you don't add them to x = y + 1 z = -sin(theta) 1 + l/2 -b + sqrt(b*b - 4*a*c) (but do say if you would). Here are some others in what I imagine is increasing order of the likelihood of your feeling the need for more parentheses: if (a < b && b < c) ... if (cp < end - 1 && *cp != 0) ... if (cp == end || cp < end-1 && *cp != 0) ... if (cp < end-1 && *cp != 0 || cp == end) ... return *ret_code = NO_SUCH_FILE, ptr; fp = file_exists(name) ? fopen(name, "r") : stdin; result = process(file) || log_error(); result = process(file) && tidy_up() || log_error(); if (1 << n > limit) ... 1 << w-1 & bits (Yes, two of the ifs have the || swapped -- I think it make a difference to some people but I'm not sure.) Do you feel they need some ()s? There's another side to this question -- would you have added redundant parentheses to these if you were writing these from scratch? I know it's hard to answer that having just seem them all without, but writing code when you are not sure is quite different to reading it when you can, at least provisionally, assume that the code means something sane. -- Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-09 16:53 +0000
Re: Remembering C's operator precedence rules Richard Damon <Richard@Damon-Family.org> - 2019-03-09 15:21 -0500
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-09 21:41 +0000
Re: Remembering C's operator precedence rules Keith Thompson <kst-u@mib.org> - 2019-03-09 12:32 -0800
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-09 21:21 +0000
Re: Remembering C's operator precedence rules Richard Damon <Richard@Damon-Family.org> - 2019-03-09 16:42 -0500
Re: Remembering C's operator precedence rules "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-03-09 14:01 -0800
Re: Remembering C's operator precedence rules Keith Thompson <kst-u@mib.org> - 2019-03-09 14:17 -0800
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-10 00:42 +0000
Re: Remembering C's operator precedence rules Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-03-09 13:54 -0700
Re: Remembering C's operator precedence rules Bart <bc@freeuk.com> - 2019-03-09 21:37 +0000
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-09 22:01 +0000
Re: Remembering C's operator precedence rules Richard Damon <Richard@Damon-Family.org> - 2019-03-09 18:59 -0500
Re: Remembering C's operator precedence rules Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-03-13 09:26 -0700
Re: Remembering C's operator precedence rules Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-03-13 10:11 -0700
Re: Remembering C's operator precedence rules Bart <bc@freeuk.com> - 2019-03-13 17:40 +0000
Re: Remembering C's operator precedence rules Keith Thompson <kst-u@mib.org> - 2019-03-13 15:24 -0700
Re: Remembering C's operator precedence rules Bart <bc@freeuk.com> - 2019-03-13 23:43 +0000
Re: Remembering C's operator precedence rules Keith Thompson <kst-u@mib.org> - 2019-03-13 17:43 -0700
Re: Remembering C's operator precedence rules Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-03-18 08:53 -0700
Re: Remembering C's operator precedence rules Wouter Verhelst <w@uter.be> - 2019-03-13 22:24 +0200
Re: Remembering C's operator precedence rules Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-03-13 14:06 -0700
Re: Remembering C's operator precedence rules Ian Collins <ian-news@hotmail.com> - 2019-03-14 14:28 +1300
Re: Remembering C's operator precedence rules scott@slp53.sl.home (Scott Lurndal) - 2019-03-14 13:35 +0000
Re: Remembering C's operator precedence rules Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-03-14 06:55 -0700
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-14 16:39 +0000
Re: Remembering C's operator precedence rules scott@slp53.sl.home (Scott Lurndal) - 2019-03-14 17:37 +0000
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-14 20:42 +0000
Re: Remembering C's operator precedence rules Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-03-14 10:42 -0700
Re: Remembering C's operator precedence rules Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-03-14 23:08 +0000
Re: Remembering C's operator precedence rules Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2019-03-15 02:53 -0700
Re: Remembering C's operator precedence rules Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-03-15 17:52 -0600
Re: Remembering C's operator precedence rules Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-03-13 12:56 -0700
Re: Remembering C's operator precedence rules Jens Stuckelberger <Jens_Stuckelberger@nowhere.net> - 2019-03-13 20:14 +0000
Re: Remembering C's operator precedence rules fir <profesor.fir@gmail.com> - 2019-03-19 14:17 -0700
csiph-web