Switch Anweisung mit zwei Parameter?

Hallo an Alle!

Ich bin nicht wirklich ein Anfänger in sachen C/C++ oder Java aber gestern habe ich eine switch-Anweisung mit zwei parameter gesehen, die auch von einem gcc Compiler übersetzt wurde. Beispiel:
switch(a, b)
{
case 1:
case 2:
}
Nun habe ich paar Fragen dazu:

  1. Wie funktioniert diese Anweisung, d.h. in welcher Reihenfloge oder Weise werden die Parameter verarbeitet? Also a | b, a & b oder a wenn nicht gefunden b …

  2. Ist es Ansii C oder gcc spezifisch?

Danke !!!

Gruß

Andreas

Hallo!

  1. Wie funktioniert diese Anweisung, d.h. in welcher
    Reihenfloge oder Weise werden die Parameter verarbeitet? Also
    a | b, a & b oder a wenn nicht gefunden b …

Müsstest du rausbekommen mit entsprechenden case-Bedingungen. Aber a,b ist immer b. Wenn du mehrere Ausdrücke mit Kommas verbindest werden sie von links abgearbeitet und nur der Wert des letzten Ausdrucks zurückgegeben. Da könnte auch stehen switch(2,b,„Hallo“,foo(),a,‚X‘,3). Also ziemlich sinnlos und in dem Code, den du da hast wohl nur ein Gag.

Gruß, Jan

Hi!

Danke für die Antwort. Jetzt wirds mir klar was das geschieht.
Ein Scherz ist es nicht (Putty sources).

if (*s) switch (c = *s++, tolower©) …

Die erste Anweisung setzt c und die zweite ist tatsächlich die case Unterschiedung. So kann man es ja auch machen, wenn man paar Klammern sparen will :smile:

Naja …

Vielen Dank noch mal!

Gruß
Andreas