Ill throw in my two cents of ramble.
c# is a wonderful language to learn if you aren't doing anything too advanced (which is probably 90% of programmers out there), to be honest, if your developing any general windows application, c# is the way to go. Its relatively fast, easy to program in, and has a solid framework. You don't have the odd bugs and memory leaks of c++.
If you want to get into low level stuff, such as programing drivers, c++/asm is what you need. It offers higher performance and it also can be optimized better than c#.
If you guys want to know something fun about 64bit programing, I'll tell ya. There should be a performance increase from applications that are build from the ground up in x64 instruction set. Most people would have you believe that there is nill performance gain. Well, thats cause:
1) The application is running in 32bit compatibility mode
2) The application was compiled in x64 but written primarily for x86
3) The program is compiled in x64, yet still uses the x86 instruction set (see FarCry x64).
The thing about Far Cry, it keeps switching instruction sets in game (yes, you can do that). Thats why there is no performance increase. Almost all games (well written games) write a lot of their math calculation (think vectors) in pure assembly, such as Far Cry. However, when they recompiled it in x64, they never modified these math libraries - so they are still running in x86! BAD CRYTECH!
So ya, a lot of games use SSE - but a lot don't use them correctly.