PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschachtelte for bzw. switch case Bedingungen


Dominic Suter
10.06.2002, 20:42
Ich habe eine Software entwickelt, welche unter Anderem Schalterzustaende einliest. Nun muss ich je nach Schalterzustand Verschiedene Programme abarbeiten. Dabei habe ich if und switch case Anweisungen.
Nun mein Problem: Welche der folgenden Syntaxen ist in C (!) richtig?

1.

if (DEVICE == 1 || 2)
{
Anweisungen;
}

2.

if (DEVICE == (1 || 2))
{
Anweisungen;
}

3.

if ((DEVICE == 1) || (DEVICE == 2))
{
Anweisungen;
}

Die selben Anweisungen sollten auch in der case Anweisung verwendbar sein.

Mein Ziel (falls nichts dergleichen funktioniert) ist, dass ich eine Variable DEVICE habe, die einen Wert von 0..3 besitzen kann. Wenn DEVICE den Wert 0 oder 1 besitzt, dann soll die If-Schleife ausgefuehrt werden. Falls nicht, habe ich (im Switch Case Konstrukt) eine Break condition, die nichts an der Software veraendert. Desshalb wollte ich ein Vergleich if DEVICE <= 1 nicht unbedingt durchfuehren.


cosmotic
10.06.2002, 21:10
if (DEVICE == 1 || DEVICE == 2) {
...
}

Dominic Suter
10.06.2002, 21:36
Vielen Dank, das wird meine Software nun (hoffentlich) zum laufen bringen :D

MrEasy
10.06.2002, 23:19
stimme cosmodings zu
hätte man aber wohl auch durch probieren rausfinden können ;)

Dominic Suter
11.06.2002, 08:10
Eigentlich schon. Wollte ich auch, aber dann bereitete das mehr Probleme als das, daruf fragte ich. Ich betreibe die Software auf einen Mikroprozessor, daher kann ich das nicht im eigentlichen Programm "austüfteln". Darum wollte ich mir mit dem Borland C++ Builder eine kleine Applikation schreiben, welche mir die Lösung angezeigt hätte. Da ich das sonst nur mir C++ machte, wusste ich nicht, was für einen Befehl ich anstelle von getch(); einsetzen könnte, damit die Konsole nach der Ausführung nicht gleich wieder geschlossen wird. Auf dem kurz aufblinkenden Fenster konnte ich leider nichts sehen, desshalb stellte ich die Frage hier.

Schönen Tag noch!

Dominic Suter
11.06.2002, 08:22
Hmmm.... nocheinmal zur Frage zurück. Wie seht denn das mit der Switch Anweisung aus?


Switch (DEVICE)
case 0 || 1:
{
Anweisungen;
}
case 2 || 3:
{
Anweisungen;
}

gibt bei meinem Compiler nur eine Fehlermeldung aus, dass die 2-te case Bedingung nicht gehe. Wie müsste ich das denn hier richtig machen? (Muss ich das wirklich in if Schleifen packen?

xOOn
11.06.2002, 08:35
Switch (DEVICE)
{
case 0:
case 1:
{
Anweisungen;
}
break;
case 2:
case 3:
{
Anweisungen;
}
break;
}

Dominic Suter
11.06.2002, 08:50
Vielen Dank!

Messiah_of_Death
11.06.2002, 10:36
XOON schlag mich jetzt net gleich tot, wenn beides gehen sollte.. (grad kein C comp zur Hand), aber wenn ich mich recht erinnere kommt das break; in die {..} der cases..



switch (DEVICE)
{
case 0:
case 1: {
Anweisungen;
break;
}
case 2:
case 3: {
Anweisungen;
break;
}
}

xOOn
11.06.2002, 11:10
@Messiah_of_Death ich schlage nur leute tot die xOOn mit 0en schreien:p :p :p

also die {} sind nur schoenheit, deshalb funkt beides

switch (DEVICE)
{
case 0:
case 1:
Anweisungen;
break;

case 2:
case 3:
Anweisungen;
break;

}



und das muesste auch funken


switch (DEVICE)
{
case 0:
case 1:
Anweisungen;
if (HabeIchLust)
break;

case 2:
case 3:
Anweisungen;
break;

}

Messiah_of_Death
11.06.2002, 11:45
wo hab ich den xOOn mit zwei 0 geschrieben :D :rolleyes: *pfeif*


naja,...gut.. ich geh da lieber auf Nummer sicher und nimm das was im Handbuch steht ....

xOOn
11.06.2002, 11:57
Geändert von Messiah_of_Death am 11.06.2002 um 11:43

was ist das da :p:p:p

naja ich will mal nicht so sein;););)


da hat nichts mit auf Nummer sicher gehen zu tun, eine case anweisung wird durchgefuehrt, bis zum ende oder bis er auf break stoesst, das mit den klammer habe ich ehrlich noch nie in einem quellcode gesehen aber egal!

Messiah_of_Death
11.06.2002, 12:02
..oki geb's ja zu... .... :p (obwohl das erste Edit.. war wegen dem Italic-Tag)

wie noch NIE gesehen ?! ...auf die Art wie ich es niederschrieb ?!
woa.. ich kenn es NUR so ... ?! ..seltsam

StoreMaster
11.06.2002, 12:55
also ist zwar egal, aber ich habs noch nie mit {} gesehn...

xOOn
11.06.2002, 13:04
echt das mit den klammern und darin das break das ist mir neu

Messiah_of_Death
11.06.2002, 16:25
..?! naja ich hab's jedenfalls so gelernt... ..evtl. auch ne Angewohnheit, weil ich - bevor ich C/C++ - gelernt hab Pascal programmierte ... (für das case braucht man auf jedenfall ein begin und end; (sag bloß jetzt einer das Gegenteil und ich zweifel an meinem Verstand ;) ) ) ... ^-^ hauptsache es funktioniert und der Compiler macht kein Error ... (in PHP und Perl mach ich des ja auch mit den {..})

xOOn
11.06.2002, 16:31
also nur um dir zu wiedersprechen soviel wie ich noch pascal kann braucht man in pascal kein begin end wenn nur ein befehl ist!

also ich ruecke den teil zwischen case und break; immer weiter ein, weil es die uebersicht verbessert, mit den {} rueckt man es soewieso ein, also dass es total keinen sinn macht stimmt auch nicht, und wenn man den syntax genau nimmt, dann muesste man eigenlich die {} nehmen, weil dem case ja ein block folgt

naja ich lass das phylosphieren (kann ja nichtmal das wort schreiben) mal lieber bevor ich noch durchdrehe

Messiah_of_Death
11.06.2002, 16:56
^-^

jaja das weis ich mit dem einem Befehl... ..ich bin aber von mehr als einer Anweisung ausgegangen ...


âch hauptsache es geht...

Phisolophie . .würd ich es schreiben :D

xOOn
11.06.2002, 17:04
kapiert und mit dem philo.. kannste recht haben