C: A Reference Manual, Fourth Edition, 4th edition
Authors: Samuel P. Harbison, Guy L. Steele
Venue:  (1994)

From the Book:This text is a reference manual for the C programming language. Our aim is to provide a complete discussion of the language, the run-time libraries, and a style of C programming that emphasizes correctness, portability, and maintainability.We expect our readers to already understand basic programming concepts, and many will have previous experience with C. In keeping with a reference format, we have presented the language in a "bottom-up" order: the lexical structure, the preprocessor, declarations, types, expressions, statements, functions, and the run0time libraries. We have included many cross-references in the text so that readers can begin at any point.With the Third Edition of C: A Reference Manual we have fully integrated the descriptions of "traditional C" and the American National Standard X3.159-1989--"ANSI C." Many popular C compilers--including, for example, Microsoft C for the IBM PC--have been moving toward the ANSI C language for some time. Even if these compilers are not fully ANSI conforming as we write this, programmers using them are better served by books that fully cover ANSI C.For the majority of programmers still using non-ANSI conforming implementations, we have not short-changed traditional C. We have retained the descriptions of various shortcommings and variations in pre-ANSI compilers so that programmers may avoid the less portable language areas if desired. We have been careful to note where ANSI C and traditional C differ and have given suggestions for writting programs that are portable between the two languages.We have also taken the opportunity afforded by this edition to make more extensive changes in the text. We added studyproblems to most chapters in Part 1 so that readers may test their understanding of the language. We added various tables to highlight language features and make the text more readable. Finally, we added many examples that illustrate the use of the library facilities in Part 2. To keep the book to a reasonable length, we shortened some tedious discussions of minor technical points, and we eliminated two chapters at the end of Part 1 that contained a separate discussion of ANSI C and a large C example program. The ANSI C description is now integrated into the main text, and there are many software engineering textbooks that treat the problems of buuilding large software systems in more depth.This book grew out of our work at Tartan Laboratories developing a family of C compilers for a wide range of computers, from micros to supermainframes. We wanted the compilers to be well documented, to provide precise and helpful error diagnostics, and to generate exceptionally efficient object code. A C program that compiles correctly with one compiler must compile correctly under al others, insofar as the hardware differences allow.In spite of C's popularity, and the increasing number of primers and introductory texts on C, we found that there was no description of C precise enough to guide us in designing the new compilers. Similarly, no existinf description was precise enough for our programmer/customers, who would be using compilers that analized C programs more thoroughly than was the custom. In this text we have been especially sensitive to language features the affect program clarity, object code efficiency, and the portability of programs among different environments, both UNIX and non-UNIX.