C is a general-purpose, imperative programming language, supporting structured programming, lexical variable scope and recursion, with static, weakly enforced type system. C provides constructs that map to machine code, so it has found use in applications that had been coded in assembly language before, including operating systems, as well as various software for computers.

C is an imperative procedural language. It was designed to be compiled using simple compiler, to provide low level stuff sufficent to replace a few tasks of assembly, and provide higher level language constructs that map efficiently to machine instructions, that require minimal run-time support, to increase usability of language.

Despite its low-level capabilities, the language has wide cross-platform programming capabilities. A C89 program that is written with portability in mind can be compiled for a very wide variety of platforms and operating systems with few or no changes to its source code. The language has become available on a very wide range of platforms, from embedded systems to supercomputers.