Etwas unbefriedigend ist das Verhalten von LaTeX, wenn in einer solchen
Variablen ein Fehler enthalten ist. Du kannst das ja einmal ausprobieren, indem Du beispielsweise ein \endgroup oder sogar ein \DasIstEinBug irgendwo in der
Variablen aus Deinem Beispiel einfügst.
Was Du da definierst, ist übrigens nicht wirklich eine Variable, sondern ein Makro. Das ist durchaus ein Unterschied. Die Unterschiede haben etwas damit zu tun, dass Makros expandiert werden, während Variablen Werte haben, die man setzen und abrufen kann. Ein Makro hat etwas von einer Funktion ist aber trotzdem auch keine Funktion. Wenn man wirklich wissen will, wie Makros funktionieren, sollte man sich etwas mit TeX selbst und der Expansion beschäftigen (→ »The TeX book« oder »TeX by Topic«).
Eine Alternative zu Makros sind übrigens Boxen. Hier sei dann ausdrücklich auf die im usrguide dokumentierte lrbox-Umgebung hingewiesen.
Eine weitere Alternative zu Makros sind Tokenregister. Das ist dann aber schon wieder etwas, bei dem na sich mit »The TeX book« oder »TeX by Topic« beschäftigen sollte.
Dass es so viele teilweise recht unterschiedliche Konzepte in TeX gibt, macht es übrigens nicht leichter TeX zu verstehen und oft auch nicht, es zu beherrschen.
Um zu Deinem Vergleich mit einer Variablen in C zurück zu kommen: Das sind zwei recht unterschiedliche Dinge. Nehmen wir das folgende Beispiel in C:
dann ist Varb am Ende dieses Beispiels bei einem Zugriff »1«.
Machen wir das mit Makros in LaTeX:
\newcommand*{\Vara}{1}
\newcommand*{\Varb}{\Vara}
\renewcommand*{\Vara}{2}
dann ergibt eine Expansion von \Varb nach diesem Beispiel »2«. Die Expansion kann sogar zu einem Fehler führen, wenn man beispielsweise ein \let\Vara\UnDeFined ergänzt.
Statt mit Makros zu arbeiten, kann man übrigens auch mit dem Paket
filecontents und \input arbeiten. Das ist in vielen Fällen besser zu beherrschen und man bekommt Fehler wenigstens halbwegs gut gemeldet (wenn auch in der erzeugten Datei, statt in der Datei-erzeugenden Datei).