Any of the languages, C++, C#, and Java which you mentioned, would be powerful and flexible in game source code.
Your challenge is:
1) Deciding if you need to build a game targeting existing frameworks which are native to the operating system, such as .NET Framework. Mostly I recommend Java for this to be fully cross-platform and tap the OpenGL API and related APIs.
2) If you really like C#, then you could still find ways of using OpenGL or you could go the Mono or Monogame path to get cross-platform. SharpDX is great for only Windows cross-platform implementation and compatibility.
3) Choose an existing game engine and much of the work is already done for you. For example, Unity 3D is Mono based (Surprise! ... to a lot of people). There are many game engines, including Java, C, C++, and C# ones - among others: http://en.wikipedia.org/wiki/List_of_game_engines
4) Making your own game engine or using a 3D engine and extending it are other options, but obviously add probably years to your first development cycle.
I am personally recommending Java and OpenGL in your case, using an existing game engine to start such as jMonkey or other. If you get very good with OpenGL, OpenCL and so on, then you could possibly get a system going of porting a core game source code to various platforms.
For many beginners, C# and Unity 3D would be my top recommendation, with SharpDX or Mono close behind.
However, your decisions might heavily depend on the type of games and basic game struct which you plan to create, so look at game engines for inspiration and the types of games created with them.
By all means, work hard, have fun, and keep at it!