Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.fortran > #73545
| From | David Brown <david.brown@hesbynett.no> |
|---|---|
| Newsgroups | comp.lang.fortran, comp.lang.c++ |
| Subject | Re: “Why do arrays start at 0?" |
| Date | 2022-08-28 11:52 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <tefdsv$jj2g$1@dont-email.me> (permalink) |
| References | (1 earlier) <tedr4l$1cc0$1@gioia.aioe.org> <tedt6n$757$1@gioia.aioe.org> <tee5i3$cqm$4@newsreader4.netcologne.de> <teeo2r$8tl$1@gioia.aioe.org> <tef6nk$1go$1@newsreader4.netcologne.de> |
Cross-posted to 2 groups.
On 28/08/2022 09:50, Thomas Koenig wrote: > Lynn McGuire <lynnmcguire5@gmail.com> schrieb: >> On 8/27/2022 5:24 PM, Thomas Koenig wrote: >>> Lynn McGuire <lynnmcguire5@gmail.com> schrieb: >>>> On 8/27/2022 2:26 PM, Fred. Zwarts wrote: >>>>> Op 26.aug..2022 om 22:49 schreef Lynn McGuire: >>>>>> “Why do arrays start at 0?" >>>>>> >>>>>> https://buttondown.email/hillelwayne/archive/why-do-arrays-start-at-0/ >>>>>> >>>>>> "It's not the reason you think. No, it's not that reason either.” >>>>>> >>>>>> My Fortran starts at one. My C++ starts at zero. This has made my >>>>>> life hell. >>>>>> >>>>>> Lynn >>>>>> >>>>> >>>>> I assumed that it was done because in C x[i] is equivalent to *(x+i). >>>> >>>> Yup. So Fortran x(i) is equivalent to *(x+i-1). >>> >>> To be more precise, x(i) is equivalent to *(x+i-lbound(x,1)) >>> >>>> Or, the x is >>>> subtracted from first: x--; *(x+i);. >>> >>> That's an f2c idiom, which is not valid C, AFAIK, because >>> the pointer would point before the actual array. >> >> While the second pointer is a bad pointer, it is not a illegal pointer. >> Variables can point to anywhere, they are not illegal until referenced. > > Unfortunately not. > > Looking at n2596.pdf, one finds under J.2, "Undefined behavior", > > — Addition or subtraction of a pointer into, or just beyond, > an array object and an integer type produces a result that does > not point into, or just beyond, the same array object (6.5.6). > >> Otherwise, code would be crashing all over the place. > > Undefined behavior does not mean that the code will reliably crash. > It just says that the C standard gives no guarantee about what will > happen, and, even if it works right now, such code is at the mercy > of future compiler revisions, cosmic rays, and other forseen and > unforseen circumstances. Indeed. C was designed to have as few restrictions on the hardware as it could, while still having a minimum feature set. If you have a segmented memory architecture (such as x86), then addresses might have a form "segment:offset". If an array starts at offset 0, what does it mean to have an address one before that? It might make no sense, or have different meanings in different contexts, or require inefficient extra instructions to get right. Some architectures pre-load information about memory pages or segments when a pointer register is loaded, causing trouble if it does not actually point to valid memory. Leaving this all undefined is much simpler for everyone. (The other end, one past the end of the array, is too useful in common C idioms to leave undefined - even if it might mean that an implementation can't use the last address in memory.)
Back to comp.lang.fortran | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
“Why do arrays start at 0?" Lynn McGuire <lynnmcguire5@gmail.com> - 2022-08-26 15:49 -0500
Re: “Why do arrays start at 0?" Gary Scott <garylscott@sbcglobal.net> - 2022-08-26 16:56 -0500
Re: “Why do arrays start at 0?" Mr Flibble <flibble@reddwarf.jmc.corp> - 2022-08-27 00:46 +0100
Re: “Why do arrays start at 0?" d thiebaud <thiebauddick2@aol.com> - 2022-08-26 22:29 -0400
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-26 19:34 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-26 20:34 -0700
Re: “Why do arrays start at 0?" Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-26 22:05 -0700
Re: “Why do arrays start at 0?" Mr Flibble <flibble@reddwarf.jmc.corp> - 2022-08-27 12:06 +0100
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-26 18:24 -0700
Re: Re: “Why do arrays start at 0?" scott@slp53.sl.home (Scott Lurndal) - 2022-08-27 14:28 +0000
Re: �Why do arrays start at 0?" Charlie Roberts <croberts@gmail.com> - 2022-08-28 10:25 -0400
Re: “Why do arrays start at 0?" Louis Krupp <lkrupp@invalid.pssw.com.invalid> - 2022-08-26 16:08 -0600
Re: �Why do arrays start at 0?" Charlie Roberts <croberts@gmail.com> - 2022-08-28 10:28 -0400
Re: Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-28 16:30 +0000
Re: “Why do arrays start at 0?" Ron Shepard <nospam@nowhere.org> - 2022-08-29 02:42 -0500
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-30 17:18 +0000
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-30 12:15 -0700
Re: “Why do arrays start at 0?" Mr Flibble <flibble@reddwarf.jmc.corp> - 2022-08-27 00:44 +0100
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-26 20:31 -0700
Re: “Why do arrays start at 0?" "fiz...@gmail.com" <fiziqs@gmail.com> - 2022-08-27 01:48 -0700
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-27 02:17 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-27 09:30 +0000
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-27 10:01 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-27 22:13 +0000
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-27 22:26 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-28 06:59 +0000
Re: “Why do arrays start at 0?" Lynn McGuire <lynnmcguire5@gmail.com> - 2022-08-28 13:42 -0500
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-28 20:17 +0000
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-28 14:08 -0700
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-28 14:05 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-28 21:54 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-28 21:53 -0700
Re: “Why do arrays start at 0?" Ron Shepard <nospam@nowhere.org> - 2022-08-29 02:07 -0500
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-29 01:30 -0700
Re: “Why do arrays start at 0?" Ron Shepard <nospam@nowhere.org> - 2022-08-29 10:13 -0500
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-29 12:30 -0700
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-29 03:48 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-27 05:16 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-27 05:47 +0000
Re: “Why do arrays start at 0?" d thiebaud <thiebauddick2@aol.com> - 2022-08-27 15:19 -0400
Re: “Why do arrays start at 0?" FortranFan <parekhvs@gmail.com> - 2022-08-27 12:45 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-27 22:22 +0000
Re: “Why do arrays start at 0?" "Fred. Zwarts" <F.Zwarts@KVI.nl> - 2022-08-27 21:26 +0200
Re: “Why do arrays start at 0?" Lynn McGuire <lynnmcguire5@gmail.com> - 2022-08-27 15:01 -0500
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-27 22:24 +0000
Re: “Why do arrays start at 0?" John <urbanjost@comcast.net> - 2022-08-27 19:34 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-28 01:50 -0700
Re: “Why do arrays start at 0?" Lynn McGuire <lynnmcguire5@gmail.com> - 2022-08-27 22:40 -0500
Re: “Why do arrays start at 0?" Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2022-08-27 22:07 -0700
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-27 23:04 -0700
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-28 07:50 +0000
Re: “Why do arrays start at 0?" David Brown <david.brown@hesbynett.no> - 2022-08-28 11:52 +0200
Re: “Why do arrays start at 0?" Paavo Helde <eesnimi@osa.pri.ee> - 2022-08-28 19:43 +0300
Re: “Why do arrays start at 0?" "Fred. Zwarts" <F.Zwarts@KVI.nl> - 2022-08-28 10:01 +0200
Re: “Why do arrays start at 0?" Thomas Koenig <tkoenig@netcologne.de> - 2022-08-28 08:14 +0000
Re: “Why do arrays start at 0?" Bonita Montero <Bonita.Montero@gmail.com> - 2022-08-28 11:07 +0200
Re: “Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-28 02:55 -0700
Re: “Why do arrays start at 0?" Robin Vowels <robin.vowels@gmail.com> - 2022-08-28 05:47 -0700
Re: ???Why do arrays start at 0?" Juha Nieminen <nospam@thanks.invalid> - 2022-08-29 11:15 +0000
Re: ???Why do arrays start at 0?" gah4 <gah4@u.washington.edu> - 2022-08-29 22:59 -0700
csiph-web