Estoy buscando aprender conceptos básicos C y sintaxis antes de comenzar la Programación de Sistemas el próximo mes. Al leer, me encontré con los estándares C89/99. Según Wikipedia,¿Qué versión de C es más apropiada para que los alumnos aprendan C89/90 o C99?
C99 introduce varias características nuevas, incluyendo funciones en línea, varios nuevos tipos de datos (incluyendo largo largo int y un tipo complejo para representar números complejos), de longitud variable arrays, soporte para las macros variadas (macros de arity variable) y soporte para comentarios de una línea comenzando con //, como en BCPL o C++. Muchos de estos ya se han implementado como extensiones en varios compiladores de C.
C99 es en su mayor parte retrógrada compatible con C90, pero es más estricta de alguna manera; en particular, una declaración que carece de un especificador de tipo ya no tiene int asumido implícitamente. Una macro estándar STDC_VERSION se define con el valor 199901L para indicar que la compatibilidad con C99 está disponible. GCC, Sun Studio y otros compiladores ahora son compatibles con muchas o todas las nuevas características de C99.
Pedí prestada una copia de K & R, segunda edición, y utiliza el estándar C89. Para un estudiante, ¿el uso de C89 invalida algunos temas cubiertos en K & R y, de ser así, qué debería buscar?
I'd go for C11. – chux