Да, немного странно, что вы можете получить громкое согласие с тем, что K & R - отличная книга на C, а также громкое согласие с тем, что C99 - правильная / текущая / лучшая версия C. Эти две позиции несовместимы - даже еслиK & R - это лучшая книга, доступная для изучения "C означает C99", которая просто подразумевает, что все остальное - мусор или также безнадежно устарели.
Я бы посоветовала учиться и использовать C99, ноПрисмотритесь к C89.Если вы используете компилятор с режимами, совместимыми как с C89, так и с C99, то вы можете написать несколько бит C89 просто для того, чтобы получить представление о различиях.Тогда, если вам когда-нибудь понадобится написать какой-то код, предназначенный для переноса в места, где нет C99, вы будете знать, что делать.Если вам никогда не приходилось писать такой код, то вы, возможно, потратили впустую, возможно, один день.
Правильно написать C89 на самом деле удивительно сложно, потому что получить копию стандарта C89 сложно.Итак, C99, если вы можете, C89, если по какой-то странной причине вы должны это сделать, и иметь некоторое представление о том, в чем разница.Возможно, используйте K & R, чтобы охватить самые основы, но как можно скорее взгляните на некоторый идиоматический C99.
Что касается конкретных проблем, о которых следует знать при чтении K & R: в предисловии к списку основных измененийстандарт (http://www.open -std.org / jtc1 / sc22 / wg14 / www / docs / n1256.pdf), хотя подробности там не изложены.Многие из них - это новые функции, добавленные в C99, так что K & R не неправильный , просто он не всегда может использовать лучшие инструменты для данной работы.Некоторые из них - довольно неудобные вещи, в которых вам, вероятно, стоит обратиться к стандарту, если вам все равно нужны детали.Остальное - это вещи, удаленные из C89, о которых компилятор C99 обычно говорит вам о том, как и когда вы попытаетесь их использовать.