Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #141853
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Remembering C's operator precedence rules |
| Date | 2019-03-09 22:01 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87zhq3906t.fsf@bsb.me.uk> (permalink) |
| References | <87lg1o9efx.fsf@bsb.me.uk> <1bh8cb93bi.fsf@pfeifferfamily.net> <UmWgE.67704$U64.2717@fx20.am4> |
Bart <bc@freeuk.com> writes: > On 09/03/2019 20:54, Joe Pfeiffer wrote: >> Ben Bacarisse <ben.usenet@bsb.me.uk> writes: >> >>> I was going to post this as a reply, but once finished I thought it >>> should be a new thread. >>> >>> Prompted by recent posts about remembering C's 15 precedence levels for >>> its 49 operators, I thought I would gather together some remarks about >>> why I think you can work most of it out for yourself. I certainly don't >>> know them all, but I think of them in big blocks (unary, arithmetic, >>> relational, and so on) which are easy to relate to each other, and only >>> every now and then do I need to consider the structure within these >>> blocks of operators. >> >> <snip> >> >> This isn't unexpected; they are in the order that seemed most intuitive >> to K&R in 1974 or thereabouts (doing something like putting + above * >> would have been downright perverse). > > That doesn't explain why there are so many. > > WHY do &, | and ^ each need, not only a separate level from all other > operators, but even separate from each other?! What could possibly be > the advantage? The advantage could possibly be having to use fewer ()s. Note (because I know how you flip arguments around) that I am not saying that there is no associated disadvantage. Another might be to allow the language to gain operators during its development without breaking any old code. That is explanation given for two of them. >> The thing is, what's most intuitive depends on everything from context >> in the program to the current phase of the moon. > > There is nothing intuitive about C's operators apart from the 4 levels > that everyone should know: > > * / (from school) > + - > == etc (from use of 'equals' in school) > && (from use of 'and' in English) That unary operators are above these is also, I suspect, intuitive even to you. And I can't see how you could argue that having pre- and post-fix operators separate, and in the order they come, is not also intuitive. What else could be done with them without making code clumsy. > One more level for || needs to be added (I don't know the reasoning > for that one although I can guess), but after that there was no reason > for any more really: Where do assignment operators come? If you put them in with something else you might still need another rule because assignment should be right-associative and most other groups should probably associate to the left. So what would be your preferred table? -- 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