Quote:
It is two different languages which each has their ANSI standard. These two standards are different because the languages are different.
C++ is based on C though and C is like an ancestor language. Because of this, almost every C construct and C statement is also valid C++. The reverse is far from true. There are a zillion statements which are valid C++ but which will not compile in C.
However, C++ is not a true superset. There are some valid C constructs which are not valid C++. There aren't many of them and ignoring C99 for a small moment one can easily say that every valid C construct can be rewritten to a form which is also valid C++ construct. Thus it was very easy to make code that would compile for both compilers.
However, because C99 made numerous changes to C this is no longer true. C's handling of complex numbers is very different from C++ and C++ has no need for C-style handling of complex numbers since it has a more powerful template mechanism that both handles complex numbers as well as many other things without requiring special syntax as the C handling does.
And yes, people use C and C++ for slightly different things even though there are overlapping areas where either can be used.
C++ is perfect for applications, simulations, object oriented programming games, windows programming, etc etc.
C can also be used for the same types of programs but C++ is better at it than C is. Especially if the program is large and complex.
Some OSes cannot handle C++ for driver development etc and you have to use C for this purpose.
In addition, C tend to produce smaller executables, more lightweight code than C++ tend to do and is therefore also often used for programming micro controllers and stuff. However, C++ is also more and more available to such hardware as the price of memory goes down.