Thanks to UB exploitation, C as implemented has been changing a lot over time. Old C was a decent low-level language. New C is barely usable.