Deutsch   English   Français   Italiano  
<vbptr4$31s4d$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!2.eu.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: Top 10 most common hard skills listed on resumes...
Date: Tue, 10 Sep 2024 17:58:13 +0100
Organization: A noiseless patient Spider
Lines: 74
Message-ID: <vbptr4$31s4d$2@dont-email.me>
References: <vab101$3er$1@reader1.panix.com> <875xrkxlgo.fsf@bsb.me.uk>
 <vapitn$3u1ub$1@dont-email.me> <87o75bwlp8.fsf@bsb.me.uk>
 <vaps06$3vg8l$1@dont-email.me> <871q27weeh.fsf@bsb.me.uk>
 <20240829083200.195@kylheku.com> <87v7zjuyd8.fsf@bsb.me.uk>
 <20240829084851.962@kylheku.com> <87mskvuxe9.fsf@bsb.me.uk>
 <vaq9tu$1te8$1@dont-email.me> <vbci8r$1c9e8$1@paganini.bofh.team>
 <vbcs65$eabn$1@dont-email.me> <vbekut$1kd24$1@paganini.bofh.team>
 <vbepcb$q6p2$1@dont-email.me> <vbj6ii$1q6mh$1@dont-email.me>
 <20240908115827.00007521@yahoo.com> <vbju6l$1sqao$2@dont-email.me>
 <87zfoikve1.fsf@bsb.me.uk> <vbkka9$201ms$2@dont-email.me>
 <vbnv43$2igdn$1@dont-email.me> <87zfofk32t.fsf@bsb.me.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 10 Sep 2024 18:58:13 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="dcf5d3c489b4c68fb3a29f50d34b534a";
	logging-data="3207309"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/hhCmpTVUxjaNyEB9A6u1h"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:4hYMSxWS1Ezwb9G7pMEq+Y+l/Xc=
In-Reply-To: <87zfofk32t.fsf@bsb.me.uk>
Content-Language: en-GB
Bytes: 4361

On 10/09/2024 15:15, Ben Bacarisse wrote:
> Bart <bc@freeuk.com> writes:
> 
>> On 08/09/2024 17:44, Bart wrote:
>>> On 08/09/2024 16:39, Ben Bacarisse wrote:
>>>> Bart <bc@freeuk.com> writes:
>>>>
>>>>> 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
>>>>
>>>> I can think of three others.  There may be more.
>>> OK, so what are they?
>>
>> TM:
>>> Yes, very good.  I count four or five, depending on what
>> differences count as different.
>>
>> I guess nobody is going to say what those extra categories are, are
>> they?
> 
> Sorry, I was busy.  I see KT as given a good summary (though I was not
> counting forms in parentheses).
> 
>> It's bad form to call somebody out on something but then refuse to tell
>> them exactly what they've got wrong or have missed out.
>>
>> 3, 4, or maybe 5 mysterious categories of LHS assignment terms that I have
>> never been encountered in a million lines of C code I've processed, but
>> nobody is willing to say what they are?
>>
>> I sense a wind-up.
> 
> You have implemented a C compiler.  The wind-up I sensed was your giving
> out misinformation, but I'll just have to take your word for it that
> you've been arguing about assignments without know what constitutes an
> lvalue expression.
> 
> But when I didn't answer soon enough, surely you could have just looked
> in any good C reference to find all the expression forms that are
> lvalues.
> 
>>>> I can think of at least one expression form for X that contradicts this
>>>> claim.
>>> Example?
>>
>> Nothing here either.
> 
> f().m where f returns a struct.

f().m is allowed with mcc and tcc compilers (but it doesn't do anything 
useful). It's not classed as an lvalue by gcc.

By "the LHS of an assignment", and "X is a term of any complexity" I 
imply those X's forming valid LHS terms.

An X used as X[i]=Y, *X=Y, or X.m=Y, or even any of the Y's, could be 
rejected for lots of reasons. That X isn't an array, pointer or struct 
for example.

(BTW I've now counted the different categories of my own languages are 
there are about 15 in all that can be used as assignment targets. A lot 
are just terms that can appear as rvalues, that can also appear as lvalues.

For example a 'switch' statement, which standard C doesn't even allow as 
an rvalue.

Sorry, did your remark above suggest I don't know what an lvalue is? 
Maybe it's a miracle all this stuff works then!)