[comp.lang.c] Updates to K&R 2

beierl_c@apollo.COM (Christopher Beierl) (06/02/89)

    I obtained the following updates to K&R 2 on a Xeroxed sheet at my
local bookstore.  I trust Brian and Dennis won't mind my posting it here.
                                   -Chris

----------------------------------------------------------------------------
            Changes to _The_C_Programming_Language,_2nd_Edition_

    Now that X3J11 has voted to send its draft to X3, and further substantive
changes in the draft standard are unlikely, Brian and I are preparing fixes
to put in any future printings of the second edition of _The_C_Programming_
Language_.  Fortunately, they are minor.  For the benefit of previous and
near-future purchasers, here are the changes that were made:

Two or three sentences in the Preface and Introduction are updated to de-
scribe the state of the Standard.

Minor typos are corrected on pages 87, 89, 164, 165, 168, 180; also 71, 76,
82, 121 atof is in <stdlib.h>, not <math.h>.

The inconspicuous references to noalias on pages 192 and 211 are removed.

The following paragraph is added to the end of section A6.6 (p 199):

    A pointer may be converted to another pointer whose type is the same
    except for the addition or removal of qualifiers (A4.4, A8.2) of the
    object type to which the pointer refers.  If qualifiers are added, the
    new pointer is equivalent to the old except for restrictions implied
    by the new qualifiers.  If qualifiers are removed, operations on the
    underlying object remain subject to the qualifiers in its actual
    declaration.

On p.199, beginning of section A6.8, "Any pointer may be converted to type
void *..." is changed to "Any pointer >to an object< may be converted to
type void*...".

On p.204, A7.4.4, "The operand of the unary + operator must have arithmetic
or pointer type..." should read "must have arithmetic type...".

On p.206, A7.9, about relational operators: "Pointers to objects of the
same type may be compared..." is changed to "Pointers to objects of the
same type >(ignoring qualifiers)< may be compared...".

The indented material on p.209, "According to the restrictions...  relaxing
it." is removed.  [This is related to the paragraph added above.  The
wording of the draft of a year ago made it useless to take an (int *)
pointer, cast it to (const int *), then cast it back to (int *).]

On p.219 middle, initialization of structures, add "Unnamed bit-field
members are ignored, and are not initialized."

Appendix B changes:
p 242: Add "fflush(NULL) flushes all output streams." to fflush description.

p 243: Change to "it must be called before reading, writing >or any other
operation<" in setvbuf description.

p 249: Add "Comparison functions treat arguments as unsigned char arrays."
to <string.h> description.

p 255: Change range of tm_sec to (0,61) for leap seconds.

p 255: Change CLK_TCK to CLOCKS_PER_SEC.

p 257: Drop U and L suffixes from <limits.h> constants.  tm_sec range is
(00,61) here too.

Appendix C changes:
p 261: Change "External declarations without any specifiers..." to "External
>data< declarations without any specifiers...".

The index has been reprinted to fix a couple of typos and account for motion
within Appendix A; one page of the table of contents is changed.
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Christopher T. Beierl                         Internet: beierl_c@apollo.com
 Apollo Computer, Inc.      UUCP: {mit-eddie,yale,uw-beaver}!apollo!beierl_c
 A Subsidiary of Hewlett-Packard                       Phone: (508) 256-6600

dbrooks@osf.OSF.ORG (David Brooks) (06/04/89)

In article <4392e156.19050@apollo.COM> beierl_c@apollo.COM (Christopher
Beierl) writes:
>
>    I obtained the following updates to K&R 2 on a Xeroxed sheet at my
>local bookstore.  I trust Brian and Dennis won't mind my posting it here.
>                                   -Chris

Thankyou from the rest of the world for doing this, anyway!

>The inconspicuous references to noalias on pages 192 and 211 are removed.
                                                          ^^^
212

>p 255: Change range of tm_sec to (0,61) for leap seconds.
>
>p 257: Drop U and L suffixes from <limits.h> constants.  tm_sec range is
>(00,61) here too.

I thought that only one leap second would be added at a time (only one
per minute, at any rate).  Shouldn't these be (0,60), then?

-- 
David Brooks			dbrooks@osf.org
Open Software Foundation	uunet!osf.org!dbrooks
11 Cambridge Center		Personal views, not necessarily those
Cambridge, MA 02142, USA	of OSF, its sponsors or members.

dmr@alice.UUCP (06/05/89)

I was a bit surprised to see Chris Beierl's posting of the errata
for K&R second edition.  More accurately, I was surprised to hear
that it was present in his copy of the book, since it was prepared
for posting to this group.  We thought we gave it to our editor at
Prentice-Hall for his information; he didn't tell us that it
was to be included as an errata list, or even let us know that
this was possible.  We would have worded it a bit differently.

In any event, here is what we have now.  All of these changes
should be in the second printing.  The main difference between
this and what Beierl posted is the addition of the statement
about initialization of automatic arrays on p. 86.

[Incidentally, the range of tm_sec is really 0 through 61.
It seems that two consecutive leap seconds are permitted.]

	Dennis Ritchie
	dmr@research.att.com
	att!research!dmr

---------
Now that X3J11 has voted to send its draft to X3, and further
substantive changes in the draft standard are unlikely, Brian
and I are preparing fixes to put in any future printings
of the second edition of "The C Programming Language."
Fortunately, they are minor.  For the benefit of previous
and near-future purchasers, here are the changes that were made:

Two or three sentences in the Preface and Introduction are updated
to describe the state of the Standard.

atof is in stdlib.h, not math.h: changes 71, 76, 82, 121.

On page 86, error corrected:  missing automatic array initializers
are zero too.

On page 168: changed 1 to 1.0 in frand() to avoid potential overflow.

Minor typos are corrected on pages 87, 89, 164, 165, 180.

The inconspicuous references to 'noalias' on pages 192 and
212 are removed.

The following paragraph is added to the end of section A6.6 (p 199):

	A pointer may be converted to another pointer whose type
	is the same except for the addition or removal of qualifiers
	(A4.4, A8.2) of the object type to which the pointer
	refers.  If qualifiers are added, the new pointer is
	equivalent to the old except for restrictions implied
	by the new qualifiers.  If qualifiers are removed, operations
	on the underlying object remain subject to the qualifiers
	in its actual declaration.

On p. 199, beginning of section A6.8, "Any pointer may be converted
to type void *..." is changed to "Any pointer >to an object< may
be converted to type void *...".

On p. 204, A7.4.4, "The operand of the unary + operator must have
arithmetic or pointer type..." should read "must have arithmetic type...".

On p. 206, A7.9, about relational operators:  "Pointers to objects
of the same type may be compared..." is changed to "Pointers to
object of the same type >(ignoring any qualifiers)< may be compared...".

The indented material on p. 209, "According to the restrictions...
relaxing it." is removed.   [This is related to the paragraph added above.
The wording of the draft of a year ago made it useless to
take an (int *) pointer, cast it to (const int *), then cast
it back to (int *).]

On p. 219 middle, initialization of structures, add "Unnamed bit-field
members are ignored, and are not initialized."


Appendix B changes:

p 242:  add "fflush(NULL) flushes all output streams." to fflush description.

p 243:  change to "it must be called before reading, writing >or any
other operation<" in setvbuf description.

p 249:  add "Comparison functions treat arguments as unsigned char arrays."
to string.h description.

p 255:  change range of tm_sec to (0,61) for leap seconds.
	CLK_TCK was changed late (12/15/88) to CLOCKS_PER_SEC.

p 257:  drop U and L suffixes from <limits.h> constants.
	tm_sec range (00,61) here too.

Appendix C change:

p 261:  Change "External declarations without any specifiers..." to
	"External >data< declarations without any specifiers...".

The index has been reprinted to fix a couple of typos and account for
motion within Appendix A;  one page of the table of contents is changed.

gwyn@smoke.BRL.MIL (Doug Gwyn) (06/05/89)

In article <1110@osf.OSF.ORG> dbrooks@osf.org (David Brooks) writes:
>I thought that only one leap second would be added at a time (only one
>per minute, at any rate).  Shouldn't these be (0,60), then?

It may well be that (0,60) is always sufficient, but the standard allows
for (0,61).  X3J11 received conflicting information about this.  We
settled on (0,61) as being a sufficiently large range to accommodate the
number of seconds no matter what the situation actually turned out to be.

frank@zen.co.uk (Frank Wales) (06/07/89)

In article <10360@smoke.BRL.MIL> gwyn@brl.arpa (Doug Gwyn) writes:
>In article <1110@osf.OSF.ORG> dbrooks@osf.org (David Brooks) writes:
>>I thought that only one leap second would be added at a time (only one
>>per minute, at any rate).  Shouldn't these be (0,60), then?
>It may well be that (0,60) is always sufficient, but the standard allows
>for (0,61).  X3J11 received conflicting information about this.

I seem to remember that a couple of years ago, the occasional end-of-year
correction was two leap seconds, and this was mentioned in some science-type
rag (Omni, I think) as being exceptional, but not unprecedented.
So the 0..61 range would seem justified.
--
Frank Wales, Systems Manager,        [frank@zen.co.uk<->mcvax!zen.co.uk!frank]
Zengrange Ltd., Greenfield Rd., Leeds, ENGLAND, LS9 8DB. (+44) 532 489048 x217