I bet 10 people will disagree with what I'm about to say, but this is my opinion gathered from years of experience in the industry:
C was invented in the late 60s and early 1970s. C is used primarily in these days for low-level driver-level kind of stuff and embedded. There are a lot of legacy projects in C. C is cumbersome and requires a lot of effort to do very little, but it's efficient (or, rather, as efficient as the programmer makes it.) It's also available on a wide array of platforms from embedded MCUs to CPUs and the like.
C++ is also used for embedded (it has a flavor called literally "Embedded C++" and is also used by Arduino / Processing IDE for Marlin) ... But, C++ is also good for higher level stuff. By Bjarne's own words he claims C++ is a language for both the driver low-level and the application high-level, all in the same project. However, C++ is an old language and suffers from its evolution as much as anything that is > 30 years old. (the spec is over 1600 pages)
C++ also involves learning STL and/or Boost. This is similar to the way a Java developer learns the Java Library.
C# on the other hand is a fairly new approach and is a Microsoft language. It's used by newer tools (Unity, Xamarin, Windows Universal App Platform) and it is considered a truly dynamic language (whatever that means) .. it's an application-level language. It does a lot more under the hood that the previously mentioned.
But, you can write games in other languages like Java, Processing and Javascript (nodejs or otherwise). In fact I'm in the process of getting a new project approved here at Handmade around writing cross-platform "native compiled" nodejs using Electronjs. See:
http://github.com/LAGameStudio/pixitron
There are also homegrown IDEs like Ecere
http://ecere.org