Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #70916
| From | James Kuyper <jameskuyper@alumni.caltech.edu> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: What is the data structure of a NULL? |
| Date | 2019-12-31 23:30 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <quh78d$88c$1@dont-email.me> (permalink) |
| References | (10 earlier) <slrnr0l0df.9o.nedlatham@woden.valhalla.oz> <quecje$bd7$1@dont-email.me> <slrnr0me8k.t3.nedlatham@woden.valhalla.oz> <9ebdefe5-d01e-4c70-af22-4dc6145b5ba3@googlegroups.com> <slrnr0mur6.t3.nedlatham@woden.valhalla.oz> |
On 12/31/19 11:46 AM, Ned Latham wrote: > �� Tiib wrote: >> Ned Latham wrote: ... >> [conv.bool] >> "A zero value, null pointer value, or null member pointer value is >> converted to false; any other value is converted to true." > > News to me. Might be because I'm a lazy reader or because my references > are out of date: Kernigan and Ritchie for C (ANSI 2) and Stroustrup > (Edition 3) for C++. Both 1990s. Yes, those sources are thirty years out of date. bool didn't even exist in K&R C, and if conditions were and are handled differently. In first edition of K&R C, it says "The unary negation operator ! converts a non-zero or true operand into 0, and a zero or false operand into l." However, the second edition came out shortly before the C89 was approved, and used wording closer to that of the soon-to-be approved standard: "The operand of the ! operator must have arithmetic type or be a pointer, and the result is 1 if the value of its operand compares equal to 0, and 0 otherwise." (A.7.4.7). The key issue may is the phrase "compares equal to". What happens when a pointer value is compared for equality with 0? Comparison for equality is covered by A.7.10, and for the special case where a pointer is "compared to a constant integral expression with a value of 0", it cross-references A.6.6. That paragraphs indicates that comparison operators are one way in which an integral constant expression with a value of 0 gets converted to pointer type, and it specifies that "This produces a null pointer that is equal to another null pointer of the same type, but unequal to any pointer to a function or object." Thus, !array has the value !(array==0), and array==0 has a value of true if array is a null pointer, and 1 if it does not, completely independent of how null pointers are represented. That is exactly the way the same issue is handled in all later versions of the C standard. My copy of Stroustrup disappeared a long time ago. My copy of the C++98 standard was saved on a hard disk which crashed. The oldest version of the standard I can locate is C++2011. As of that version, the relevant issues were addressed in the same fashion as in the current version: the unary ! is described in terms of inverting the result of a conversion to bool, and the rules for conversion to bool specify that null pointer values get converted to false. Thus, the result is guaranteed to be false for null pointer values, regardless of how they are represented. I'm curious: how does the description of these issues in your copy of Stroustrup differ from those descriptions? With the preceding C standard and the following C++ standards so carefully written to produce results that are independent of how null pointers are represented, it would seem very odd if that version of C++ was defined in a way which did depend upon the representation. >> It does not say that bit-wise checks are made, > > If NULL == 0, bitwise checks aren't required, just a check of the > Z flag of the register that received the return. How would that work? If null pointer values are, for instance, represented by having all bits set to 1 (as has actually been done by at least one implementation), NULL == 0 will still be true - the standard requires it to be. I suspect that your comments are specific to a particular architecture, one for which "all bits 1" would not be a suitable choice for null pointers. It was a very natural choice on the platform where that representation was actually used.
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-27 13:24 -0800
Re: What is the data structure of a NULL? Ian Collins <ian-news@hotmail.com> - 2019-12-28 10:36 +1300
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-27 13:55 -0800
Re: What is the data structure of a NULL? Bo Persson <bo@bo-persson.se> - 2019-12-28 11:28 +0100
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-27 20:50 -0500
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-28 17:14 -0800
Re: What is the data structure of a NULL? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-01-10 20:56 -0800
Re: What is the data structure of a NULL? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-12-27 22:42 +0100
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-27 13:55 -0800
Re: What is the data structure of a NULL? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2019-12-27 23:10 +0100
Re: What is the data structure of a NULL? Öö Tiib <ootiib@hot.ee> - 2019-12-27 14:15 -0800
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-27 14:24 -0800
Re: What is the data structure of a NULL? Öö Tiib <ootiib@hot.ee> - 2019-12-27 14:41 -0800
Re: What is the data structure of a NULL? Manfred <noname@add.invalid> - 2019-12-28 20:11 +0100
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-28 17:16 -0800
Re: What is the data structure of a NULL? Manfred <noname@invalid.add> - 2019-12-29 17:52 +0100
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-29 12:21 -0800
Re: What is the data structure of a NULL? Bart <bc@freeuk.com> - 2019-12-28 01:46 +0000
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-28 17:17 -0800
Re: What is the data structure of a NULL? Bart <bc@freeuk.com> - 2019-12-29 01:42 +0000
Re: What is the data structure of a NULL? T <T@invalid.invalid> - 2019-12-28 18:39 -0800
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-28 02:14 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-28 08:33 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-28 13:22 -0800
Re: What is the data structure of a NULL? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2019-12-28 16:02 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-28 22:37 -0600
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-28 22:37 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-28 21:12 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-29 04:45 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-29 13:31 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-29 21:34 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-29 22:48 -0800
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-29 20:20 -0500
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-29 21:50 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-29 22:46 -0800
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-30 10:25 +0100
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-30 05:20 -0600
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-30 17:24 +0100
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-30 17:22 -0600
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-31 13:57 +0100
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-31 07:33 -0600
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-31 15:45 +0100
Re: What is the data structure of a NULL? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-12-30 18:16 +0000
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-30 10:45 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-30 17:29 -0600
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-30 21:48 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-30 04:19 -0600
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-30 17:27 +0100
Re: What is the data structure of a NULL? Öö Tiib <ootiib@hot.ee> - 2019-12-30 03:25 -0800
Re: What is the data structure of a NULL? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-12-31 21:54 +0000
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-30 06:03 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-30 17:01 -0600
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-30 21:42 -0500
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-31 06:03 -0600
Re: What is the data structure of a NULL? Öö Tiib <ootiib@hot.ee> - 2019-12-31 06:17 -0800
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-31 10:46 -0600
Re: What is the data structure of a NULL? Melzzzzz <Melzzzzz@zzzzz.com> - 2019-12-31 16:57 +0000
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2019-12-31 18:15 +0100
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-31 11:20 -0800
Re: What is the data structure of a NULL? David Brown <david.brown@hesbynett.no> - 2020-01-01 17:01 +0100
Re: What is the data structure of a NULL? Ned Latham <nedlatham@woden.valhalla.oz> - 2019-12-31 11:21 -0600
Re: What is the data structure of a NULL? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-12-31 21:37 +0000
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-31 15:21 -0800
Re: What is the data structure of a NULL? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-12-31 17:26 +0000
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-31 23:30 -0500
Re: What is the data structure of a NULL? Manfred <noname@add.invalid> - 2020-01-01 18:10 +0100
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-01-01 12:21 -0500
Re: What is the data structure of a NULL? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-12-31 15:20 +0000
Re: What is the data structure of a NULL? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2019-12-31 11:11 -0800
Re: What is the data structure of a NULL? Chris Vine <chris@cvine--nospam--.freeserve.co.uk> - 2019-12-31 19:47 +0000
Re: What is the data structure of a NULL? James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-12-31 10:27 -0800
csiph-web