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


Groups > comp.lang.c++ > #85993

Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ?

From Juha Nieminen <nospam@thanks.invalid>
Newsgroups comp.lang.c++
Subject Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ?
Date 2022-08-19 06:01 +0000
Organization Aioe.org NNTP Server
Message-ID <tdn8vo$1k5j$1@gioia.aioe.org> (permalink)
References <tdkk90$1bt7$1@gioia.aioe.org> <slrntfrodf.cin.ike@sdf.org>

Show all headers | View raw


Ike Naar <ike@sdf.org> wrote:
> First, == binds stronger than & in C and C++, so
> 
>   flags & flagMask == flagMask
> 
> is interpreted as
> 
>   flags & (flagMask == flagMask)

Which, in fact, is one of the most incomprehensible and annoying thing
that they did when they were inventing C (and which was then "inherited"
by C++).

Conceptually the bitwise binary operators are not that much different
from the arithmetic binary operators. Conceptually expressions like
"a+b", "a*b", "a/b", "a&b", "a^b" are doing the same thing: They are
taking two values and performing an operation on them that results
in a new value. Thus, in the same way as it's logical to write things
like:

  if(a + b == c + d)

it would seem to likewise logical to write things like:

  if(a & b == c & d)

There may be precedence differences between the binary operators, but
one would intuitively expect them all to be higher than comparison.

(Yes, *technically* speaking == is also "a binary operator that takes
two values and produces a third value from them", but not really at
the conceptual intuitive level. At the conceptual level is not really
an arithmetic operator, but is merely doing a comparison, which is not
the same thing. Thus it's logical to think that it's not the same kind
of operator as those other ones.)

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


Thread

flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-18 07:55 +0200
  Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Ike Naar <ike@sdf.org> - 2022-08-18 06:52 +0000
    Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-18 09:58 +0200
      Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Muttley@dastardlyhq.com - 2022-08-18 14:50 +0000
        Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-18 17:12 +0200
        Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? scott@slp53.sl.home (Scott Lurndal) - 2022-08-18 15:29 +0000
          Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-18 16:43 +0100
            Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? scott@slp53.sl.home (Scott Lurndal) - 2022-08-18 16:10 +0000
            Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? David Brown <david.brown@hesbynett.no> - 2022-08-18 21:19 +0200
              Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Manfred <noname@add.invalid> - 2022-08-19 02:57 +0200
                Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? David Brown <david.brown@hesbynett.no> - 2022-08-19 08:29 +0200
            Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-19 08:12 -0700
          Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Mike Terry <news.dead.person.stones@darjeeling.plus.com> - 2022-08-18 16:47 +0100
            Re: flags & flagMask == flagMask can be true for flags != flagMask if Muttley@dastardlyhq.com - 2022-08-18 15:50 +0000
            Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-18 10:46 -0700
              Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-18 11:30 -0700
          Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Muttley@dastardlyhq.com - 2022-08-18 15:47 +0000
        Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-19 08:53 -0700
          Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? David Brown <david.brown@hesbynett.no> - 2022-08-19 18:00 +0200
          Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Muttley@dastardlyhq.com - 2022-08-19 16:10 +0000
            Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2022-08-19 16:45 -0700
    Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Juha Nieminen <nospam@thanks.invalid> - 2022-08-19 06:01 +0000
      Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-19 16:07 +0100
      Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2022-08-19 16:08 +0100
  Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Mike Terry <news.dead.person.stones@darjeeling.plus.com> - 2022-08-18 16:14 +0100
    Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-18 18:10 +0200
  Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-08-18 11:56 -0700
    Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-18 21:31 +0200
      Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? Andrey Tarasevich <andreytarasevich@hotmail.com> - 2022-08-18 21:24 -0700
        Re: flags & flagMask == flagMask can be true for flags != flagMask if flags is a superset of flagMask ? "R.Wieser" <address@not.available> - 2022-08-19 09:36 +0200

csiph-web