Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Michael S Newsgroups: comp.lang.c Subject: Re: question about nullptr Date: Tue, 9 Jul 2024 11:00:19 +0300 Organization: A noiseless patient Spider Lines: 53 Message-ID: <20240709110019.00004d6d@yahoo.com> References: <20240706054641.175@kylheku.com> <877cdyuq0f.fsf@bsb.me.uk> <2ckiO.19403$7Ej.4487@fx46.iad> <87plrpt4du.fsf@bsb.me.uk> <9bCiO.7108$sXW9.3805@fx41.iad> <877cdwu9s1.fsf@nosuchdomain.example.com> <20240708222804.00001654@yahoo.com> <20240708194600.781@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Injection-Date: Tue, 09 Jul 2024 09:59:55 +0200 (CEST) Injection-Info: dont-email.me; posting-host="563505b595a11e4e07a72bd290784cde"; logging-data="1383167"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+vo5ARTTbu28mYBlj6n53o60yTq8fC1j4=" Cancel-Lock: sha1:73ivDH+LRCdiM5gGFA0dCL+v96I= X-Newsreader: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-w64-mingw32) Bytes: 3059 On Tue, 9 Jul 2024 02:49:49 -0000 (UTC) Kaz Kylheku <643-408-1753@kylheku.com> wrote: > On 2024-07-08, Michael S wrote: > > On Sun, 07 Jul 2024 15:17:34 -0700 > > Keith Thompson wrote: > > > >> > >> I just about always use NULL, not 0, when I want a null pointer > >> constant. Similarly, I use '\0', not 0, when I want a null > >> character, 0.0 when I want a floating-point zero, and false when I > >> want a Boolean zero. I just like being explicit. > >> > > > > Pointer: I very rarely use NULL. > > Character: I never use '\0'. > > Floating point: I never use 0.0. > > Never say never! > > printf("%f\n", 0); // undefined behavior. > printf("%f\n", 0.0); // correct > Yes, but that's extremely rare that I want constant (except string literal) as variable argument to printf(). > If you're #define-ing a floating-point constant that has > no fractional part, you should put that .0 there. > I am trying hard to avoid #define-ing floating-point constants. In rare cases where it is not avoidable, most often the constant does have fractional part. I am not sure what I would prefer when I can't avoid #define-ing and the constant has no fractional part. Will I write something like '#define ANSWER ((double)42)' or (42.0) ? It depends on the mood of the minute. > Someone's going to pass your constant as a variadic argument, > where it doesn't convert to floating-point. > > Also: > > 1/3 -> 0 > 1/3.0 -> 0.33333... > > If you're #define-ing a floating point constant that has > no fractional part, and don't include the .0, and the > programmer uses it as a division denominator thinking that > it's a floating-point quantity, oops! >