Die Anweisung \tabularnewline, die bei Tabellen letztlich hinter dem \\ steckt, kennt ein optionales Argument für einen zusätzlichen vertikalen Abstand. Da Leerzeichen vor optionalen Argumenten überlesen werden und einzelne Zeilenenden für TeX nichts anderes als Leerzeichen sind, wird
behandelt. Damit wird also [g,h] zum optionalen Argument von \\. Da dieses Argument aber keine Länge und keinen Längenwert darstellt, wird die Fehlermeldung ! Missing number, treated as zero. erzeugt.
Lösung ist in solchen Fällen, das Einfügen von \relax:
Durch das \relax wird die Suche nach einem optionalen Argument beendet. Da Leerzeichen und Zeilenenden nach einer Anweisung ignoriert werden, führt es im Gegensatz zu einem {} auch nicht dazu, dass unerwünschte Leerzeichen in der Ausgabe erscheinen.
Alternativ könnte man natürlich auch einen zusätzliche Null-Längen-Wert angeben:
@jan12 Sehr schön analysierte Problembeschreibung und eines wichtige Fragen!