Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #141967
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Remembering C's operator precedence rules |
| Date | 2019-03-14 20:42 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <875zsl6vcz.fsf@bsb.me.uk> (permalink) |
| References | (3 earlier) <eg5olf-gk.ln1@gangtai.home.grep.be> <getp20Ffe1gU1@mid.individual.net> <VMsiE.8585$q55.1681@fx42.iad> <87bm2d76lu.fsf@bsb.me.uk> <2jwiE.76034$O65.74368@fx35.iad> |
scott@slp53.sl.home (Scott Lurndal) writes:
> Ben Bacarisse <ben.usenet@bsb.me.uk> writes:
>>scott@slp53.sl.home (Scott Lurndal) writes:
>>
>
>>> 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)
>
>
> As you say, the first four don't require parens.
>
>>
>>(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) ...
>
> I would use parens with the four immediately above.
So you consider it confusing, or at least not immediately obvious (to
you or your readers), that relational operators have higher precedence
than && and ||? That one surprises me.
I was hoping you'd add the parentheses. I presume you'd add
if ((cp < end - 1) && (*cp != 0)) ...
if ((cp == end) || ((cp < end-1) && (*cp != 0))) ...
if (((cp < end-1) && (*cp != 0)) || (cp == end)) ...
and no more? I find the last two very fussy.
>> 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();
>
> I wouldn't have written any of these four the way you have
> unless I was writing a korn shell script. In C/C++, I'd use
> if sans side effects:
>
> e.g.
>
> result = process(file);
> if (result) {
> tidy_up();
> } else {
> log_error();
> }
That's another matter. The two bits of code do different things. You
have to do more work to get result set to the correct "success" status.
>> if (1 << n > limit) ...
>>
>> 1 << w-1 & bits
>
> These I would have used parens
Are you OK with '<<' vs. '-' but not '<<' vs. '&'? Or it is both?
--
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