《C陷阱与缺陷》是一本由Andrew Koenig撰写的经典C语言技术书籍,首次出版于1989年。本书深入探讨了C语言中常见的陷阱和缺陷,通过大量实例帮助读者理解C语言的复杂性和易错点,是一本适合有一定C语言基础的程序员的进阶读物。
本书的中文版由掌上书苑制作,进行了第一次修订。修订内容包括修正文中的错别字和格式错误,并根据中文习惯对部分句子进行了改写,以提高可读性。
译者在译序中指出,即使那些自认为已经“学完”C语言的人,仍需仔细阅读本书,因为C语言的学习之路还很漫长。本书不仅介绍了C语言的特性,还揭示了其潜在的危险和陷阱。
C语言被比喻为一把雕刻刀,虽然锋利且功能强大,但稍有不慎就会伤到使用者。本书旨在介绍C语言中可能伤害粗心程序员的方式,以及如何避免这些潜在的危险。
本书内容分为多个章节,涵盖了C语言的词法、句法、连接、语义、库函数、预处理器以及可移植性等方面的问题。
=
用于赋值,而==
用于比较,容易混淆。/*
和==
,编译器需根据上下文判断其含义。a + /* strange */ = 1
,组合赋值运算符是两个记号。switch
语句允许跳转到下一个case
,容易导致逻辑错误。else
总是与最近的if
关联,容易导致逻辑错误。lint
进行检查。&&
、||
和!
运算符的行为与按位运算符不同,容易混淆。getc()
返回的是整数,而不是字符,容易导致错误。typedef
比宏更灵活,适合定义新类型。rand()
函数返回的随机数范围在不同系统中可能不同。toupper()
和tolower()
函数的行为在不同系统中可能不同。《C陷阱与缺陷》是一本深入剖析C语言陷阱的经典书籍。它不仅揭示了C语言中常见的错误和缺陷,还提供了详细的解决方案和建议。通过阅读本书,读者可以更好地理解C语言的复杂性,避免常见的错误,提高代码的可读性和可移植性。无论是初学者还是经验丰富的程序员,都能从本书中获得宝贵的知识和启发。