Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| Message-ID | <4FA7E91A.5C12@mindspring.com> (permalink) |
|---|---|
| Date | 2012-05-07 11:24 -0400 |
| From | pete <pfiland@mindspring.com> |
| Organization | PF |
| Newsgroups | comp.lang.c |
| Subject | Re: Operator precedence. |
| References | <76630b90-04ab-4976-b1a0-76868d85ccf5@vy9g2000pbc.googlegroups.com> <4FA79A67.5017@mindspring.com> <jo8d19$bm5$1@dont-email.me> |
James Kuyper wrote: > > On 05/07/2012 05:48 AM, pete wrote: > > somenath wrote: > ... > >> I tried to explain myself the outcome of 2+3*5 the way Chris Torek > >> has explained the expression -- - x but I am not able to construes > >> how the precedence of * will be enforced by the C grammar with out > >> using operator precedence. > > > > I can't do it either. > > I use the precedence table in chapter 2 of K&R instead. > > What does that table say about the relative precedence of ||, ?:, =, and > the comma operator? Using that table and the corresponding information > about the associativity of the operators, how do you parse the two > following expressions: > > a || b ? d , e : f ? g : h > a ? b : c ? d , e : f = g > > Try to determine the correct parsings before reading any farther. The > correct parsings according to the C grammar cannot both be reproduced by > applying a single consistent precedence order to all of the relevant > operators. They are: > > (a || b) ? (d , e) : (f ? g : h) > (a ? b : (c ? (d , e) : f)) = g > > The second one is a constraint violation - the C standard requires both > that it be parsed that way, and that having been so parsed, it must be > diagnosed as a constraint violation. > > Those particular expressions were chosen for a message I sent out > several months ago explaining the differences between C and C++ in the > parsing of such expressions. If you're interested, try the C++ examples: > > a || b ? d , e : f = g > a ? b : c ? d , e : f , g > > The peculiar spacing was chosen to allow enough room to insert the > parentheses needed to indicate the correct parse, and to line up the > corresponding variables when viewed in a monospaced font. a || b ? d , e : f = g a || b ? (d , e) : f = g because ? and : form a pair of book ends, like ( and ) do. (a || b) ? (d , e) : f = g because || is stronger than ?: ((a || b ? (d , e) : f) = g because ?: is stronger than = /***********************************************/ a ? b : c ? d , e : f , g a ? b : c ? (d , e) : f , g because ? and : form a pair of book ends, like ( and ) do. (a ? b : c ? (d , e) : f) , g because ?: is stronger than , (a ? b : (c ? (d , e) : f)) , g because ?: associates right to left -- pete
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Operator precedence. somenath <somenathpal@gmail.com> - 2012-05-06 20:10 -0700
Re: Operator precedence. somenath <somenathpal@gmail.com> - 2012-05-06 20:23 -0700
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-06 23:57 -0400
Re: Operator precedence. Kaz Kylheku <kaz@kylheku.com> - 2012-05-07 03:59 +0000
Re: Operator precedence. pete <pfiland@mindspring.com> - 2012-05-07 05:48 -0400
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-07 07:52 -0400
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-07 13:18 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-07 09:08 -0400
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-07 14:36 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-07 13:29 -0400
Re: Operator precedence. pete <pfiland@mindspring.com> - 2012-05-07 11:24 -0400
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-07 16:35 +0100
Re: Operator precedence. jgk@panix.com (Joe keane) - 2012-05-10 19:05 +0000
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-10 20:35 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-11 09:25 -0400
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 16:42 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-11 12:28 -0400
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 18:42 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-11 15:18 -0400
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 22:52 +0100
Re: Operator precedence. James Kuyper <jameskuyper@verizon.net> - 2012-05-11 18:39 -0400
Re: Operator precedence. Ike Naar <ike@sverige.freeshell.org> - 2012-05-11 19:20 +0000
Re: Operator precedence. Ike Naar <ike@sverige.freeshell.org> - 2012-05-11 19:28 +0000
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 22:28 +0100
Re: Operator precedence. Ike Naar <ike@sverige.freeshell.org> - 2012-05-11 21:45 +0000
Re: Operator precedence. Keith Thompson <kst-u@mib.org> - 2012-05-12 12:11 -0700
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-11 17:37 +0100
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-11 16:24 +0100
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 20:14 +0100
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-11 20:56 +0100
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-11 22:21 +0100
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-12 00:05 +0100
Re: Operator precedence. jgk@panix.com (Joe keane) - 2012-05-11 22:46 +0000
Re: Operator precedence. Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-05-12 00:17 +0100
Re: Operator precedence. jgk@panix.com (Joe keane) - 2012-05-12 19:35 +0000
Re: Operator precedence. "BartC" <bc@freeuk.com> - 2012-05-12 22:39 +0100
Re: Operator precedence. Keith Thompson <kst-u@mib.org> - 2012-05-12 16:07 -0700
Re: Operator precedence. jgk@panix.com (Joe keane) - 2012-05-13 19:08 +0000
Re: Operator precedence. Keith Thompson <kst-u@mib.org> - 2012-05-13 13:17 -0700
Re: Operator precedence. jgk@panix.com (Joe keane) - 2012-05-14 21:06 +0000
Re: Operator precedence. Keith Thompson <kst-u@mib.org> - 2012-05-14 20:42 -0700
Re: Operator precedence. Kaz Kylheku <kaz@kylheku.com> - 2012-05-13 23:20 +0000
Re: Operator precedence. Keith Thompson <kst-u@mib.org> - 2012-05-10 15:24 -0700
csiph-web