(i) It is a structured high-level language and is highly portable to different platforms.
(ii) C is closest to assembly language and hence it is extremely efficient. Some programmers call it "high-level assembly language", although it is not a justified comment.
(iii) C is a relatively small language compared to C++. It has fewer keywords than C++. This is both an advantage and a drawback. It can be considered to be an advantage as there is less to learn as well as it occupies less memory space. Because of this it is popular for imbedded systems where memory is a constraint. At the same time, it does not provide facilities to perform every task.
(iv) C has a large collection of standard library functions which are helpful in program writing and execution. Besides a programmer may also add his/her own functions to the library.
(v) C does not impose strict built-in ways of performing every task.
(vi) C is a compiled language and hence is more efficient than interpreted languages such as Basic. In case of a compiled language, the source code (the program written by programmer) is converted into an executable binary file which is loaded on to RAM for execution. In case of an interpreted language, the interpreter translates the source code line by line (taking one line at a time) thus taking more time for execution.
(vii) C does not try hard to warn the programmer about the programming mistakes. However, these mistakes may be avoided if the programmer is careful.
(viii) Additional features have been added to C-99 to make it more compatible with C++.