I am a PhD student in Scientific Computing and over the past few months, I spent a good amount of time learning Python and C++ the right way. I feel that I have learnt C++ well and I can use Python to do what I want if I keep a good reference book around.I also know MATLAB enough to prototype my ideas and get solutions. (If I am too bored to code Python which is my first choice).I have read multiple times here that one should club C and C++ into one C/C++ because they are extremely different languages with different motives and I completely agree with that viewpoint. Although I cannot claim to know C++ since I am always learning but I think I understand most of how I should use it and how I should use it not. The first language that I learnt was C but it has been very long since I last used it. My question is essentially this:Given that I know MATLAB, C++ and Python; should I invest time in learning C? Will my knowledge of the mentioned 3 languages be enough for me to code? My research is more on the numerical linear algebra side but I also do some discrete event simulation/stochastic processes consulting. My intention is to work in Industry (My advisor suggested I learn C++ so that I stay employable though he has no personal preferences of languages). 
Do I need to learn C?
python;c++
I will address only the comparison of C to C++. While it is true that anything written in C can be ported to C++ with a few syntactic touch-ups, the communities have different values.The C library community, more than almost any other, values binary stability.Binary stability is critical for low-level libraries to avoid inflicting constant pain on those layers above, especially when used with a binary distribution model and shared libraries.C is the overwhelming preference for such libraries that need to just work, with the ability to ship new releases without recompiling layers above.It is possible to ship C++ libraries that operate at this level, but you end up needing to write C in C++.For example, you would never place a structure definition with private or virtual members in a public header, you would never use templates in a public interface, and you would never have an API based on inheritance from classes that have any data members.These constraints are necessary to precisely contain dependencies, so that you can modify your implementation without changing the binary interface.C tends to be much easier to bind from different languages, due to its simpler object model and well-defined ABI.If you are writing code at the application level rather than the library level, then your binary interface is unimportant, so many of these concerns go away.Use of C++ language features like inheritance and templates still tend to produce more tightly coupled code, leading to more time-consuming recompilation as the project grows.In addition to more sprawling compile-time dependencies, simply compiling C code with a C++ compiler significantly increases compilation time (about 2x with most toolchains).If these concerns interest you, or if you plan to work on lower-level libraries, then spending time on C may be worthwhile.If you like using C++ language features and aren't too bothered by binary interfaces and coupling tightness, then it may not be a good use of time.But keep C in mind if these things things start bothering you in the future.