This is a list of typographics errors found in H. M. Deitel and P. J. Deitel, C++ How to Program, Prentice-Hall, 1994.

This list was compiled from the 7th printing.

A General Problem

Throughout the sample programs in the text and on the CD-ROM, the authors use a construct like this:
    for (int i = 0; i < limitVal; i++) {
This code declares the variable i to have block scope within the for loop, which is fine. The problem is that the authors rely on the behavior of older C++ compilers to give i scope that extends from the for statement onward in the function in which it appears, even after the end of the loop. This construct is no longer valid in current drafts of the C++ standard, and the g++ compiler issues warnings when compiling the code.

The general solution is to declare the loop index at the beginning of the function definition instead of inside the for statement.

Errata by Page

Page 134
The quotation should read, "Call me Ishmael."
Page 223
The comment that references "Fig. 3.10" should reference Fig. 3.8.
Page 368
The sentence that begins in the eighth line of the first paragraph in Section 6.11 should start with the word "There" instead of "The."
Page 547
The last sentence of the last full paragraph on the page repeats the last sentence of the previous paragraph. Omit the second copy.
Page 610
The last word of the comment that starts on the seventh line of Fig 12.3 ("elements") appears at the beginning of the next line. It should be at the end of line 7.
Page 620
In the third item in the list of Objectives change the word "of" to "at."
Page 625
In the second line from the bottom of the page, change the word "an" to "and."
Page 673
It's not really a typographical error, but the function textFile should close print.txt before returning. Adding the statement, outPrintFile.close(); just before the last brace in the function would do it.
Page 674
The two functions on this page fail to check the validity of the user's input the way updateRecord() defined on the previous page does. In both functions, the statement cin >> account; should be bracketed by "do { ... } while (account < 1 || account > 100); " The code to issue the prompt should be moved inside this loop.
Page 718
On the first line, change "insertNode" to "insertNodeHelper."
Page 758
The ninth line of text from the top of the page says that value & displayMask evaluates to 1, but it evaluates to 10000000 00000000. However, he logic of the program is correct, because any non-zero value is treated as "true" when C++ evaluates logical expressions.
Page 764
In the "Type" column of Fig. 16.13 change "negation" to "bitwise exclusive OR" or "bitwise XOR."

Christopher Vickery
Queens College of CUNY
Home Page