El comportamiento indefinido: el error invisible que acecha en todo código C

Fuentes: Everything in C is undefined behavior

El artículo aborda un tema fundamental en la programación con C y C++: el comportamiento indefinido (Undefined Behavior o UB). El autor, con más de 30 años de experiencia, argumenta que prácticamente todo código no trivial en C/C++ contiene UB, y que es imposible escribir código completamente correcto. El UB no es simplemente un error del programador que el compilador puede aprovechar; significa que el compilador asume que el código es válido y no implementa casos especiales para situaciones imposibles. Se presentan ejemplos concretos: acceder a un puntero mal alineado (que en algunas arquitecturas como SPARC causa crash, pero en x86 funciona), usar isxdigit() con caracteres más allá de 127 (puede leer memoria arbitraria), y convertir float a int (el estándar C23 indica que si el valor no cabe, es UB). El autor concluye que si nadie puede escribir C correctamente, tiene poco sentido culpar al programador. Esto es relevante para desarrolladores de kernels, drivers, sistemas embebidos y aplicaciones de alto rendimiento donde C/C++ sigue siendo esencial.