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.
We do not act because we know, but we know because we are called upon to act; the practical reason is the root of all reason.