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


Groups > comp.lang.c > #104639

Re: lvalues from the ternary op

From Keith Thompson <kst-u@mib.org>
Newsgroups comp.lang.c
Subject Re: lvalues from the ternary op
Date 2017-02-24 12:42 -0800
Organization None to speak of
Message-ID <lnfuj3ian8.fsf@kst-u.example.com> (permalink)
References (15 earlier) <db48a6eb-67ad-49f2-bd5f-b2d682aa8850@googlegroups.com> <kfnzihhv2jq.fsf@x-alumni2.alumni.caltech.edu> <7cf3d284-16e8-4f6a-8f3a-b62b8fbcd9c5@googlegroups.com> <kfnlgsvtwax.fsf@x-alumni2.alumni.caltech.edu> <d74fd7b1-1dea-443d-8617-2be77c9b51ba@googlegroups.com>

Show all headers | View raw


supercat@casperkitty.com writes:
> On Friday, February 24, 2017 at 9:58:56 AM UTC-6, Tim Rentsch wrote:
>> The problem you're having now is that your conclusions are not
>> consistent with everyone else's.  Until you learn to express
>> yourself in a way that communicates effectively with other
>> people, /and vice versa/, that problem is not going to go away.
>> A tall order, I know, but there it is.
>
> The following questions assume the following declaration is in scope, and
> for questions about code, assume the scope is within some function and is
> executed.
>
>     union { unsigned u; float f; } uf;
>
> True or false: the Standard specifies as a runtime constraint that stored
> value of an object of type "float" may not be accessed with an lvalue of
> type "unsigned".  Because this is a runtime constraint, the Standard
> allow implementations to do anything whatsoever if code violates it.  Such
> permission overrides anything else in the Standard that would otherwise
> define the behavior of the code.

False.  The term "runtime-constraint", introduced in C11, applies only
to calls to library functions specified in the optional Annex K.

I think you meant (or should have meant) "undefined behavior".
If you'd like to try again, please cite the wording in the standard
that says the behavior is undefined (if there is such wording).
In fact, I strongly suggest you support each of your true/false
statements with a direct citation of the standard (N1570 is fine).
That will make it easier for the rest of us to follow along, and I for
one have a fairly low threshold for how much effort I'm willing to put
into this.

> True or false: the Standard specifies that the above declaration will, among
> other things, create an object of type "float" which is stored within "uf",
> and such object will exist as long as containing "uf" object exists.

There might be some question of whether the float object uf.f "exists"
when the unsigned member uf.u is the one that was most recently written.
I am not attempting here to answer any such question, just observing
that this is a point that calls for extra clarity.

> True or false: the Standard specifies that the expression "uf.u" will
> is an lvalue of type "unsigned".

I presume you meant "is" rather than "will is".  I agree that the
statement is true, but I'm being cautious because you've misused the
term "lvalue" before.

> True or false: the Standard allows an implementation to process the
> statement "uf.u = 4;" in a way that writes to the stored value of the float
> value stored within "uf".

I suggest wording this more clearly.  One can write to an object, not to
a value; writing to an object updates the value that's stored in that
object.

> True or false: the Standard allows an implementation to process the
> statement "uf.u = 4;" in a way that would cause a stored value of type
> "float" to be accessed using an lvalue of type "unsigned", violating a
> runtime constraint.

Again, you're misusing the term "runtime constraint".

> True or false: if any of the ways in which a conforming implementation
> could process an action invoke UB, the action itself invokes UB.

I think there's a statement in the standard that's similar to that,
though I'm not at all certain about it.  If there is, I suggest citing
it directly so we can judge whether your summary is accurate.

[snip]

It's quite possible that the standard's wording on union members is
internally inconsistent (that "quite possible" is mostly reflective of
my current state of ignorance on the matter).  One particular question
I'm curious about is whether the footnote in 6.5.2.3:

    If the member used to read the contents of a union object is
    not the same as the member last used to store a value in the
    object, the appropriate part of the object representation of
    the value is reinterpreted as an object representation in the
    new type as described in 6.2.6 (a process sometimes called
    "type punning). This might be a trap representation.

can be inferred from the normative wording of the standard.
(It clearly represents the intent of the committee.  The question
is whether that intent is sufficiently clearly stated in normative
text.)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"

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


Thread

Re: lvalues from the ternary op Manfred <noname@invalid.add> - 2017-01-04 19:46 +0100
  Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-04 11:08 -0800
  Re: lvalues from the ternary op Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-04 21:10 +0000
    Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-04 13:48 -0800
      Re: lvalues from the ternary op Ian Collins <ian-news@hotmail.com> - 2017-01-05 11:07 +1300
        Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-04 14:20 -0800
      Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-04 14:41 -0800
        Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-04 15:21 -0800
          Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-04 15:52 -0800
            Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-04 16:37 -0800
            Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-04 18:31 -0800
              Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-13 17:26 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-13 17:49 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-15 22:53 -0800
    Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-13 17:08 -0800
      Re: lvalues from the ternary op Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-01-14 02:15 +0000
        Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-15 22:51 -0800
      Re: lvalues from the ternary op luser droog <luser.droog@gmail.com> - 2017-01-16 23:09 -0800
        Re: lvalues from the ternary op Manfred <noname@invalid.add> - 2017-01-18 14:51 +0100
          Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-18 09:59 -0800
            Re: lvalues from the ternary op Lew Pitcher <lew.pitcher@digitalfreehold.ca> - 2017-01-18 13:12 -0500
            Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-18 12:11 -0800
              Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-18 12:45 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-18 14:07 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-18 14:40 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-18 16:10 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-18 18:08 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-19 06:44 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-19 08:40 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-19 12:32 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-20 06:01 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-20 08:15 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-20 10:51 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-20 11:32 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-20 13:41 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-23 07:04 -0800
                Re: lvalues from the ternary op Ike Naar <ike@iceland.freeshell.org> - 2017-01-23 17:59 +0000
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-23 10:57 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-31 08:45 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-01-31 09:13 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-31 10:17 -0800
                Re: lvalues from the ternary op Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-01 01:51 +0000
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-01 14:24 -0800
                Re: lvalues from the ternary op Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-02-02 03:07 +0000
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-04 04:43 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-04 08:01 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-09 09:06 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-09 11:56 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-12 10:29 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-12 13:43 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-19 21:44 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-20 08:15 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-24 07:58 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-24 10:00 -0800
                Re: lvalues from the ternary op scott@slp53.sl.home (Scott Lurndal) - 2017-02-24 18:58 +0000
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-24 13:03 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-02-24 14:11 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-02-24 12:42 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-02-24 13:49 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-24 13:58 -0800
                Re: lvalues from the ternary op Keith Thompson <kst-u@mib.org> - 2017-02-24 14:56 -0800
                Re: lvalues from the ternary op supercat <flatfinger@casperkitty.com> - 2017-02-25 14:00 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-25 09:23 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-25 09:43 -0800
                Re: lvalues from the ternary op Kelsey Bjarnason <kbjarnason@gmail.com> - 2017-02-01 22:47 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-02 10:12 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-04 07:51 -0800
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-02-04 08:18 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-09 08:58 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-04 04:00 -0800
                Re: lvalues from the ternary op Kelsey Bjarnason <kbjarnason@gmail.com> - 2017-02-04 09:35 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-04 09:35 -0800
                Re: lvalues from the ternary op Robert Wessel <robertwessel2@yahoo.com> - 2017-01-31 13:36 -0600
                Re: lvalues from the ternary op supercat@casperkitty.com - 2017-01-31 12:23 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-02-01 13:48 -0800
                Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-31 08:53 -0800
            Re: lvalues from the ternary op Manfred <noname@invalid.add> - 2017-01-19 14:10 +0100
        Re: lvalues from the ternary op Tim Rentsch <txr@alumni.caltech.edu> - 2017-01-30 12:05 -0800

csiph-web