(Message inbox:1084) Date: Mon, 4 Feb 1991 15:34:19 -0500 From: dmr@research.att.com To: moraes@cs.toronto.edu Subject: Re: Wanted: K&R2 errata Return-Path: neat.cs.toronto.edu!research.att.com!dmr Received: from neat.cs.toronto.edu ([128.100.3.2]) by smoke.cs.toronto.edu with SMTP id <272>; Mon, 4 Feb 1991 15:34:44 -0500 Received: from research.att.com ([192.20.225.2]) by neat.cs.toronto.edu with SMTP id <7142>; Mon, 4 Feb 1991 15:34:33 -0500 Message-Id: <91Feb4.153433est.7142@neat.cs.toronto.edu> Yes; it was posted Jan 31. Here's a copy. Dennis --- It's time to post the latest version of the errata list for the second edition of K&R. Further corrections are welcome. Dennis Ritchie att!research!dmr dmr@research.att.com ----- Changes to The C Programming Language, 2nd Edition As the C standard wended its way through the approval process and became final, Brian and I prepared fixes to put in new printings of the second edition of ``The C Programming Language.'' These printings are identified by a large red ``ANSI C'' in the upper right quadrant. Fortunately, the changes are minor; some repair our bugs, a few account for last-minute changes in the draft standard. 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 , not ; this changes 71, 76, 82, 121. On page 86, error corrected: elided initializers are 0 for automatic as well as static variables. On page 168: changed 1 to 1.0 to avoid potential overflow. Minor typos are corrected on pages 87, 89, 164, 165, 168, 180. 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 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 penultimate draft 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 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 constants. tm_sec range is (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. October, 1989: Minor changes on page 131 to add & to last example, on page 208 to change ``equal'' to ``unequal'' in the description of logical OR, and on page 254 to clarify that only volatile automatics are saved with longjmp. Not yet fixed in any printing: page 53: Note under the table should say & as well as + - * has higher precedence as a unary operator. page 111: indent is too large, and a bit of program text is cut off. page 231 extra right paren in nested call to cat macro. page 246: first argument of sscanf should have type const char *. page 249: in description of strncpy, t => ct.