Deutsch   English   Français   Italiano  
<vagtpa$2ahdn$1@dont-email.me>

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

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: James Kuyper <jameskuyper@alumni.caltech.edu>
Newsgroups: comp.lang.c
Subject: Re: question about nullptr
Date: Sun, 25 Aug 2024 23:45:46 -0400
Organization: A noiseless patient Spider
Lines: 40
Message-ID: <vagtpa$2ahdn$1@dont-email.me>
References: <v6bavg$3pu5i$1@dont-email.me>
 <90c2181ae4c7aac8f17f076093923d5b357c43aa@i2pn2.org>
 <v6bt15$3svoi$1@dont-email.me> <v6iik7$1948o$1@dont-email.me>
 <v6iklk$19cv8$1@dont-email.me> <v6inai$19q6r$1@dont-email.me>
 <v6insm$19uag$1@dont-email.me> <874j8yswha.fsf@bsb.me.uk>
 <v6k6a3$1gsq2$3@dont-email.me> <v6k6ha$1gsq2$4@dont-email.me>
 <v6m87m$1v1rh$1@dont-email.me> <cj6ncj93220a0hmgj64itsrlmngfmur44h@4ax.com>
 <vagjcl$25csn$1@dont-email.me> <87wmk4dqu8.fsf@nosuchdomain.example.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 26 Aug 2024 05:45:47 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="3237a3a946c1b91b57fca64b4d568edd";
	logging-data="2442679"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/NwK9rBnApJBlsULdqopEsbRBfQfLfWPs="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:YoOqKfmBOEf3kyVvWY2ygnbgE6k=
In-Reply-To: <87wmk4dqu8.fsf@nosuchdomain.example.com>
Content-Language: en-US
Bytes: 3178

On 8/25/24 21:18, Keith Thompson wrote:
> James Kuyper <jameskuyper@alumni.caltech.edu> writes:
>> On 8/25/24 16:56, dave_thompson_2@comcast.net wrote:
>>> On Wed, 10 Jul 2024 11:09:41 -0400, James Kuyper
>>> <jameskuyper@alumni.caltech.edu> wrote:
>>>
>>>> NULL is required to expand
>>>> into a null pointer constant ... 0 and (void*)0 are the
>>>> two most likely and common choices.
>>>>
>>> ((void*)0)
>>> Otherwise NULL["foo"] gives quite the wrong result
>>
>> Correct. Sorry.
>
> A mostly meaningless price of trivia: In C17 and earlier, an excessively
> literal reading of the standard implies that ((void*)0) is not a null
> pointer constant. It says that a null pointer constant is "An integer
> constant expression with the value 0, or such an expression cast to type
> void *". It does not say that a parenthesized null pointer constant is
> a null pointer constant. (And (void*)0 is a null pointer constant but
> not a valid definition for NULL.)
>
> C23 fixes this by updating the wording for parenthesized expressions.
>
> C17: "A *parenthesized expression* is a primary expression. Its type and
> value are identical to those of the unparenthesized expression. It is an
> lvalue, a function designator, or a void expression if the
> unparenthesized expression is, respectively, an lvalue, a function
> designator, or a void expression."
>
> C23: "A *parenthesized expression* is a primary expression. Its type,
> value, and semantics are identical to those of the unparenthesized
> expression."

I remembered that you had raised this issue before, and I think my
memory of that issue is what led me to leave out the outer parentheses.
I'm glad to know that they cleared it up.