C is not clean – the language has many gotchas and traps, and although its semantics are simple in some sense, it is not any cleaner than the assembly-language design it is based on.