R history: Why 'L; in suffix character ‘L’ for integer constants?
On 16/06/2017 20:37, Jim Hester wrote:
The relevant sections of the C standard are http://c0x.coding-guidelines.com/5.2.4.2.1.html, which specifies that C
There is more than one C standard, but that is none of them.
ints are only guaranteed to be 16 bits, C long ints at least 32 bits in size, as Peter mentioned. Also http://c0x.coding-guidelines.com/6.4.4.1.html specifies l or L as the suffix for a long int constants. However R does define integers as `int` in it's source code, so use of L is not strictly correct if a compiler uses 16 bit int types. I guess this ambiguity is why the `int32_t` typedef exists.
However, R checks that the compiler uses 32-bit ints in its build (configure and src/main/arithmetic.c) and documents that in R-admin . In any case, the C standard does not apply to the R language. Also, int32_t - postdates R (it was introduced in C99, a few OSes having it earlier) - is optional in the C99 and C11 standards (?7.20.1.1 in C11).
On Fri, Jun 16, 2017 at 3:01 PM, William Dunlap via R-devel < r-devel at r-project.org> wrote:
"Writing R Extensions" says "int": R storage mode C type FORTRAN type logical int* INTEGER integer int* INTEGER double double* DOUBLE PRECISION complex Rcomplex* DOUBLE COMPLEX character char** CHARACTER*255 raw unsigned char* none Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Jun 16, 2017 at 11:53 AM, peter dalgaard <pdalgd at gmail.com> wrote:
Wikipedia claims that C ints are still only guaranteed to be at least 16
bits, and longs are at least 32 bits. So no, R's integers are long.
-pd
On 16 Jun 2017, at 20:20 , William Dunlap via R-devel <
r-devel at r-project.org> wrote:
But R "integers" are C "ints", as opposed to S "integers", which are C "long ints". (I suppose R never had to run on ancient hardware with 16
bit
ints.) Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Jun 16, 2017 at 10:47 AM, Yihui Xie <xie at yihui.name> wrote:
Yeah, that was what I heard from our instructor when I was a graduate student: L stands for Long (integer). Regards, Yihui -- https://yihui.name On Fri, Jun 16, 2017 at 11:00 AM, Serguei Sokol <
sokol at insa-toulouse.fr
wrote:
Le 16/06/2017 ? 17:54, Henrik Bengtsson a ?crit :
I'm just curious (no complaints), what was the reason for choosing
the
letter 'L' as a suffix for integer constants? Does it stand for something (literal?), is it because it visually stands out, ..., or
no
specific reason at all?
My guess is that it is inherited form C "long integer" type (contrary
to
"short integer" or simply "integer") https://en.wikipedia.org/wiki/C_data_types
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[[alternative HTML version deleted]]
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
-- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
[[alternative HTML version deleted]]
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[[alternative HTML version deleted]]
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Brian D. Ripley, ripley at stats.ox.ac.uk Emeritus Professor of Applied Statistics, University of Oxford