ぶっちゃけC/C++するには、アセンブラを理解しないと、なかなか表面記法しか理解できないと思う。

プログラムをコンパイルして実行すると、
どのようにプログラム、データがメモリ上にマップされ、
どのように変化してゆくのか、
そこを強く意識することで、はじめて
「C/C++とはこういうことをやるのをこのように記述するのか、
だから他の言語とは違い、泥臭いこと、他の言語ではなかなか
 困難なことも可能なのね」
ということがわかるようになる。

その領域にない人であれば、C/C++とC#は、特に変わらん。