Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #162626

Re: C precedence - relative comparisons before equality operators

From Bart <bc@freeuk.com>
Newsgroups comp.lang.c
Subject Re: C precedence - relative comparisons before equality operators
Date 2021-09-06 00:09 +0100
Organization A noiseless patient Spider
Message-ID <sh3io6$pfh$1@dont-email.me> (permalink)
References <sh2vvh$oir$1@dont-email.me> <sh38om$1nc6m$1@news.xmission.com> <Q_aZI.46522$F26.22819@fx44.iad>

Show all headers | View raw


On 05/09/2021 22:52, Richard Damon wrote:
> On 9/5/21 4:19 PM, Kenny McCormack wrote:
>> In article <sh2vvh$oir$1@dont-email.me>,
>> James Harris  <james.harris.1@gmail.com> wrote:
>>> According to
>>>
>>>    https://en.cppreference.com/w/c/language/operator_precedence
>>>
>>> and other references C applies relative comparisons (<, <=, >=, >)
>>> before equality comparisons (==, !=) rather than giving them all the
>>> same priority.
>>>
>>> Anyone know why the precedences were designed that way?
>>>
>>> Are there certain idioms in which that arrangement is useful?
>>
>> I think it makes sense.  If I see:
>>
>>      if (a < b == c < d)
>>
>> I would expect it to mean:
>>
>>      if ((a < b) == (c < d))
>>
>> That's got to be more useful than:
>>
>>      if ((a < (b == c)) < d)
>>
> 
> I think that is probably about as good of an arguement as any will find.

I think given some of the other crazy decisions, it's probably 
accidental if this particular one has any benefit.

> 
> Since the grammer doesn't easily support what some later langagues did
> to make a < b < c to mean (a < b) && (b < c) which can be handy being
> able to say something like a < b == b < c at least lets you test if 3
> numbers are in sequence without parenthesis.

In sequence maybe, but it doesn't distinguish between ascending or 
descending as a < b < c would do in properly chained comparisons.

I think the OP is thinking of implementing chained comparisons, and may 
be gauging what would be lost if moving away from the C model.

Personally I wouldn't care about that; Python has chained comparisons so 
it doesn't care about compatibility with C expressions either.

(I have them too, but I can emulate whatever C does by adding parentheses.)



> Also, it puts less operators at any give level of the grammer which
> might be useful. You end up with more levels of grammer, but each one is
> simpler.

I dispute it's that useful; but it is certainly harder to remember all 
the different levels. You can also can't assume that everyone will know 
them as well as you.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

C precedence - relative comparisons before equality operators James Harris <james.harris.1@gmail.com> - 2021-09-05 18:49 +0100
  Re: C precedence - relative comparisons before equality operators Siri Cruise <chine.bleu@yahoo.com> - 2021-09-05 13:11 -0700
  Re: C precedence - relative comparisons before equality operators Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-09-05 21:12 +0100
    Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 09:09 +0200
  Re: C precedence - relative comparisons before equality operators gazelle@shell.xmission.com (Kenny McCormack) - 2021-09-05 20:19 +0000
    Re: C precedence - relative comparisons before equality operators Richard Damon <Richard@Damon-Family.org> - 2021-09-05 17:52 -0400
      Re: C precedence - relative comparisons before equality operators Bart <bc@freeuk.com> - 2021-09-06 00:09 +0100
        Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 09:15 +0200
          Re: C precedence - relative comparisons before equality operators Bart <bc@freeuk.com> - 2021-09-06 11:10 +0100
            Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 13:01 +0200
              Re: C precedence - relative comparisons before equality operators Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2021-09-06 04:20 -0700
    Re: C precedence - relative comparisons before equality operators John Bode <jfbode1029@gmail.com> - 2021-09-07 09:27 -0500
      Re: C precedence - relative comparisons before equality operators Bart <bc@freeuk.com> - 2021-09-08 00:20 +0100
        Re: C precedence - relative comparisons before equality operators John Bode <jfbode1029@gmail.com> - 2021-09-08 14:18 -0500
  Re: C precedence - relative comparisons before equality operators Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-09-06 02:01 +0100
    Re: C precedence - relative comparisons before equality operators James Harris <james.harris.1@gmail.com> - 2021-09-06 09:39 +0100
      Re: C precedence - relative comparisons before equality operators Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-09-06 10:46 +0100
        Re: C precedence - relative comparisons before equality operators Richard Damon <Richard@Damon-Family.org> - 2021-09-06 10:09 -0400
          Re: C precedence - relative comparisons before equality operators Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-09-06 16:05 +0100
  Re: C precedence - relative comparisons before equality operators James Harris <james.harris.1@gmail.com> - 2021-09-06 09:27 +0100
    Re: C precedence - relative comparisons before equality operators James Harris <james.harris.1@gmail.com> - 2021-09-06 12:18 +0100
      Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 13:44 +0200
        Re: C precedence - relative comparisons before equality operators James Harris <james.harris.1@gmail.com> - 2021-09-06 13:38 +0100
          Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 18:12 +0200
        Re: C precedence - relative comparisons before equality operators tth <tth@none.invalid> - 2021-09-06 18:20 +0200
          Re: C precedence - relative comparisons before equality operators David Brown <david.brown@hesbynett.no> - 2021-09-06 23:40 +0200
      Re: C precedence - relative comparisons before equality operators Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-09-06 17:20 -0700
    Re: C precedence - relative comparisons before equality operators Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-09-06 13:44 +0100
    Re: C precedence - relative comparisons before equality operators Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2021-09-06 17:23 -0700
  Re: C precedence - relative comparisons before equality operators James Kuyper <jameskuyper@alumni.caltech.edu> - 2021-09-06 23:07 -0400

csiph-web