Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Michael S Newsgroups: comp.lang.c Subject: Re: Top 10 most common hard skills listed on resumes... Date: Sun, 8 Sep 2024 16:34:32 +0300 Organization: A noiseless patient Spider Lines: 54 Message-ID: <20240908163432.00003f8f@yahoo.com> References: <87mskwy9t1.fsf@bsb.me.uk> <875xrkxlgo.fsf@bsb.me.uk> <87o75bwlp8.fsf@bsb.me.uk> <871q27weeh.fsf@bsb.me.uk> <20240829083200.195@kylheku.com> <87v7zjuyd8.fsf@bsb.me.uk> <20240829084851.962@kylheku.com> <87mskvuxe9.fsf@bsb.me.uk> <20240908115827.00007521@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Injection-Date: Sun, 08 Sep 2024 15:34:10 +0200 (CEST) Injection-Info: dont-email.me; posting-host="46daed28da5e223c25c4774ca01ab553"; logging-data="2041887"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX191pNry7dLWHQU1syjS/KIUfdcguaoypiQ=" Cancel-Lock: sha1:sJ4qdNA2W0FfNGbXbcEY1eOUZqQ= X-Newsreader: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-w64-mingw32) Bytes: 3180 On Sun, 8 Sep 2024 11:27:33 +0100 Bart wrote: > On 08/09/2024 09:58, Michael S wrote: > > On Sun, 8 Sep 2024 05:44:16 +0200 > > Janis Papanagnou wrote: > > > >> On 06.09.2024 13:34, Bart wrote: > >>> > >>> In more complicated cases in languages, then some asymmetry does > >>> come up. For example, suppose C allowed this (my language allows > >>> the equivalent): > >>> > >>> (c ? a : b) = x; > >> > >> In Algol 68 you can write > >> > >> IF c THEN a ELSE b FI := x > >> > >> or, in a shorter form, as > >> > >> ( c | a | b ) := x > >> > >> if you prefer. > >> > > > > Are you sure? > > It seems to me that you got it backward. > > > > The point here is that you can write such a 2-way select on the LHS > of an assignment. C doesn't allow that unless you wrap it up as a > pointer expression: > > *(c ? &a : &b) = x; > > In language like C, the LHS of an assignment is one of four > categories: > > A = Y; // name > *X = Y; // pointer > X[i] = Y; // index > X.m = Y; // member select > > A is a simple variable; X represents a term of any complexity, and Y > is any expression. (In C, the middle two are really the same thing.) > > Some languages allow extra things on the LHS, but in C they can be > emulated by transforming the term to a pointer operation. In the same > it can emulate pass-by-reference (which objects which are not arrays!) Got it. Thank you.