Re: Regarding assignment to struct

Liste des GroupesRevenir à l c 
Sujet : Re: Regarding assignment to struct
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.c
Date : 07. May 2025, 08:37:57
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vvf2kl$sq8k$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
On 06/05/2025 21:22, Scott Lurndal wrote:
David Brown <david.brown@hesbynett.no> writes:
On 06/05/2025 19:36, Waldek Hebisch wrote:
Keith Thompson <Keith.S.Thompson+u@gmail.com> wrote:
Andrey Tarasevich <noone@noone.net> writes:
[...]
    #include <stdio.h>
>
    struct S { int a[10]; };
>
    int main()
    {
      struct S a, b = { 0 };
      int *pa, *pb, *pc;
>
      pa = &a.a[5],
      pb = &b.a[5],
      pc = &(a = b).a[5],
      printf("%p %p %p\n", (void *) pa, (void *) pb, (void *) pc);
    }
>
This version has no UB.
>
I believe it does.  pc points to an element of an object with
temporary lifetime.  The value of pc is then used after the object
it points to has reached the end of its lifetime.  At that point,
pc has an indeterminate value.
>
N3096 6.2.4p2: "If a pointer value is used in an evaluation after
the object the pointer points to (or just past) reaches the end of
its lifetime, the behavior is undefined. The representation of a
pointer object becomes indeterminate when the object the pointer
points to (or just past) reaches the end of its lifetime."
>
Note commas above.  Assignment to pc and call to printf are parts
of a single expression, so use of pc is within lifetime of the
temporary object.
>
>
I must admit I had not noticed that detail.
 That would get an immediate downcheck during review for exactly
that reason.
Of course.  In fact, if someone presented such code for review (and assuming I noticed the commas!) I'd have to consider whether it was done maliciously, intentionally deceptively, due to incompetence, or smart-arse coding.  In all my C coding experience, I can't recall ever coming across a single situation when I thought the use of the comma operator was appropriate in the kind of code I work with.
Other people, projects, and teams work with different standards, different requirements, and different kinds of code - there are a lot of things that are common practice in some C coding that are strongly rejected in my field (and perhaps vice versa).  So I am not suggesting that the comma operator is always bad in C - just that it is pretty much always bad in my line of work.
And of course Andrey was using it here to make a specific point in a discussion about C details, rather than real-life code.

Date Sujet#  Auteur
2 May 25 * Regarding assignment to struct99Lew Pitcher
2 May 25 +- Re: Regarding assignment to struct1Keith Thompson
2 May 25 +* Re: Regarding assignment to struct13Barry Schwarz
2 May 25 i`* That depends... (Was: Regarding assignment to struct)12Kenny McCormack
3 May 25 i `* Re: That depends... (Was: Regarding assignment to struct)11Lew Pitcher
3 May 25 i  +- Re: That depends... (Was: Regarding assignment to struct)1Lawrence D'Oliveiro
3 May 25 i  +- Re: That depends... (Was: Regarding assignment to struct)1Janis Papanagnou
3 May 25 i  +* Re: That depends... (Was: Regarding assignment to struct)5Kaz Kylheku
3 May 25 i  i+* Re: That depends... (Was: Regarding assignment to struct)3Kaz Kylheku
5 May 25 i  ii`* Re: That depends... (Was: Regarding assignment to struct)2Janis Papanagnou
5 May 25 i  ii `- Re: That depends... (Was: Regarding assignment to struct)1Kaz Kylheku
4 May 25 i  i`- Re: That depends... (Was: Regarding assignment to struct)1Tim Rentsch
3 May 25 i  +- Re: That depends... (Was: Regarding assignment to struct)1James Kuyper
4 May 25 i  `* Re: That depends... (Was: Regarding assignment to struct)2Tim Rentsch
4 May 25 i   `- Re: That depends... (Was: Regarding assignment to struct)1Lew Pitcher
2 May 25 +* Re: Regarding assignment to struct2Waldek Hebisch
3 May 25 i`- Re: Regarding assignment to struct1Lew Pitcher
3 May 25 +* Re: Regarding assignment to struct66Andrey Tarasevich
3 May 25 i+* Re: Regarding assignment to struct9Lawrence D'Oliveiro
4 May 25 ii`* Re: Regarding assignment to struct8Keith Thompson
4 May 25 ii `* Re: Regarding assignment to struct7James Kuyper
4 May 25 ii  +- Re: Regarding assignment to struct1Kenny McCormack
4 May 25 ii  +- Re: Regarding assignment to struct1David Brown
4 May 25 ii  `* Re: Regarding assignment to struct4Keith Thompson
5 May 25 ii   +- Re: Regarding assignment to struct1James Kuyper
5 May 25 ii   +- Re: Regarding assignment to struct1Keith Thompson
6 May 25 ii   `- Re: Regarding assignment to struct1Tim Rentsch
3 May 25 i+- Re: Regarding assignment to struct1Lawrence D'Oliveiro
4 May 25 i`* Re: Regarding assignment to struct55Tim Rentsch
5 May 25 i `* Re: Regarding assignment to struct54Andrey Tarasevich
5 May 25 i  +* Re: Regarding assignment to struct29Michael S
5 May 25 i  i+* Re: Regarding assignment to struct27Andrey Tarasevich
5 May 25 i  ii`* Re: Regarding assignment to struct26Michael S
5 May 25 i  ii +- Re: Regarding assignment to struct1Tim Rentsch
5 May 25 i  ii `* Re: Regarding assignment to struct24Andrey Tarasevich
5 May 25 i  ii  +* Re: Regarding assignment to struct4Michael S
6 May 25 i  ii  i+- Re: Regarding assignment to struct1Tim Rentsch
29 May13:11 i  ii  i+- Re: Regarding assignment to struct1Andrey Tarasevich
29 May17:57 i  ii  i`- Re: Regarding assignment to struct1James Kuyper
5 May 25 i  ii  `* Re: Regarding assignment to struct19Keith Thompson
6 May 25 i  ii   +* Re: Regarding assignment to struct2Tim Rentsch
6 May 25 i  ii   i`- Re: Regarding assignment to struct1Keith Thompson
6 May 25 i  ii   +* Re: Regarding assignment to struct3David Brown
29 May13:19 i  ii   i`* Re: Regarding assignment to struct2Andrey Tarasevich
29 May20:05 i  ii   i `- Re: Regarding assignment to struct1David Brown
6 May 25 i  ii   +* Re: Regarding assignment to struct11Waldek Hebisch
6 May 25 i  ii   i+* Re: Regarding assignment to struct7David Brown
7 May 25 i  ii   ii`* Re: Regarding assignment to struct6David Brown
29 May13:49 i  ii   ii `* Re: Regarding assignment to struct5Andrey Tarasevich
29 May15:33 i  ii   ii  +- Re: Regarding assignment to struct1Janis Papanagnou
29 May20:20 i  ii   ii  `* Re: Regarding assignment to struct3David Brown
29 May22:54 i  ii   ii   +- Re: Regarding assignment to struct1Keith Thompson
30 May09:50 i  ii   ii   `- Re: Regarding assignment to struct1David Brown
6 May 25 i  ii   i+- Re: Regarding assignment to struct1Keith Thompson
29 May13:21 i  ii   i`* Re: Regarding assignment to struct2Andrey Tarasevich
29 May15:43 i  ii   i `- Re: Regarding assignment to struct1Janis Papanagnou
29 May13:14 i  ii   `* Re: Regarding assignment to struct2Andrey Tarasevich
29 May21:56 i  ii    `- Re: Regarding assignment to struct1Keith Thompson
5 May 25 i  i`- Re: Regarding assignment to struct1Tim Rentsch
5 May 25 i  +* Re: Regarding assignment to struct4Keith Thompson
5 May 25 i  i`* Re: Regarding assignment to struct3Andrey Tarasevich
8 May 25 i  i `* Re: Regarding assignment to struct2Tim Rentsch
8 May 25 i  i  `- Re: Regarding assignment to struct1David Brown
5 May 25 i  +* Re: Regarding assignment to struct17Keith Thompson
5 May 25 i  i+* Re: Regarding assignment to struct6Michael S
5 May 25 i  ii+- Re: Regarding assignment to struct1Kenny McCormack
5 May 25 i  ii+* Re: Regarding assignment to struct3Keith Thompson
5 May 25 i  iii`* Re: Regarding assignment to struct2Kaz Kylheku
6 May 25 i  iii `- Re: Regarding assignment to struct1Tim Rentsch
6 May 25 i  ii`- Re: Regarding assignment to struct1Tim Rentsch
5 May 25 i  i`* Re: Regarding assignment to struct10Tim Rentsch
5 May 25 i  i `* Re: Regarding assignment to struct9Keith Thompson
6 May 25 i  i  +* Re: Regarding assignment to struct6Nick Bowler
6 May 25 i  i  i`* Re: Regarding assignment to struct5Keith Thompson
7 May 25 i  i  i `* Re: Regarding assignment to struct4Nick Bowler
7 May 25 i  i  i  +* Re: Regarding assignment to struct2Keith Thompson
8 May 25 i  i  i  i`- Re: Regarding assignment to struct1Nick Bowler
8 May 25 i  i  i  `- Re: Regarding assignment to struct1Tim Rentsch
29 May13:36 i  i  `* Re: Regarding assignment to struct2Andrey Tarasevich
29 May22:36 i  i   `- Re: Regarding assignment to struct1Keith Thompson
5 May 25 i  +* Re: Regarding assignment to struct2Tim Rentsch
5 May 25 i  i`- Re: Regarding assignment to struct1David Brown
12 May 25 i  `- Re: Regarding assignment to struct1NotAorB
3 May 25 +* Re: Regarding assignment to struct8David Brown
5 May 25 i`* Re: Regarding assignment to struct7Muttley
5 May 25 i +- Re: Regarding assignment to struct1David Brown
5 May 25 i `* Re: Regarding assignment to struct5Keith Thompson
6 May 25 i  +- Re: Regarding assignment to struct1Muttley
6 May 25 i  +* Re: Regarding assignment to struct2David Brown
6 May 25 i  i`- Re: Regarding assignment to struct1Muttley
6 May 25 i  `- Re: Regarding assignment to struct1Michael S
4 May 25 +* Re: Regarding assignment to struct6Richard Damon
4 May 25 i`* Re: Regarding assignment to struct5Michael S
4 May 25 i +* Re: Regarding assignment to struct2Lawrence D'Oliveiro
4 May 25 i i`- Re: Regarding assignment to struct1David Brown
6 May 25 i +- Re: Regarding assignment to struct1Tim Rentsch
12 May 25 i `- Re: Regarding assignment to struct1Rosario19
4 May 25 +- Re: Regarding assignment to struct1Tim Rentsch
4 May 25 `- Re: Regarding assignment to struct1Keith Thompson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal