Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ switch, break, case c++ (https://www.delphipraxis.net/193661-switch-break-case-c.html)

Ghostwalker 28. Aug 2017 08:39

AW: switch, break, case c++
 
Und noch mal der Vollständigkeithalber:

"{" und "}" dienen nur der Lesbarkeit, können also weggelassen werden.

"break" dient dem Abschluß eines Zweiges einer Switch..Case;

"break" kann im letzten case-Zweig auch weggelassen werden.

Wird "break" mittendrinn weggelassen, so werden die weiteren case's ausgeführt, bis ein break kommt oder
die Switch-Anweisung zuende ist;

Beispiele:

Code:
   switch(x){
      case 1: b=0;c=0;break;
      case 2: b=1;c=1;break;
   }
Code:
   switch(x){
     case 1: b=0;c=0;break;
     case 2: b=1;c=1;break;
     default: b=99;c=99;
   }
Spezialfälle:

Code:
   switch(x){
     case 1: b=0;c=0;
     else b=1;c=1;
     default: b=99;c=99;
   }
Ergebnis wär in dem Fall b=99 und c=99, da die Case nicht abegeschlossen wird (mit break);

Ich hoffe ich konnte dir eine :idea: bringen :)

Motzi 28. Aug 2017 08:43

AW: switch, break, case c++
 
Zitat:

Zitat von Ghostwalker (Beitrag 1379672)
"{" und "}" dienen nur der Lesbarkeit, können also weggelassen werden.

Sorry, aber das ist so nicht richtig! Die geschwungenen Klammern definieren einen Scope, der für die Lebensdauer von Variablen äußerst wichtig ist (Stichwort RAII). Ob sie weggelassen werden können oder nicht hängt also sehr stark vom Kontext ab!

Ghostwalker 28. Aug 2017 08:49

AW: switch, break, case c++
 
hmm...kann sein. Da ich in C++ usw. genauso programmier wie in Delphi, deklariere ich keine Variablen mittem im Code. Damit is mir das bisher nicht aufgefallen :)

EWeiss 28. Aug 2017 08:52

AW: switch, break, case c++
 
Zitat:

deklariere ich keine Variablen mittem im Code
Das ist aber ein großer Vorteil gegenüber Delphi.

gruss

Motzi 28. Aug 2017 09:27

AW: switch, break, case c++
 
Zitat:

Zitat von Ghostwalker (Beitrag 1379679)
hmm...kann sein. Da ich in C++ usw. genauso programmier wie in Delphi, deklariere ich keine Variablen mittem im Code. Damit is mir das bisher nicht aufgefallen :)

Damit ignorierst du dann aber eines der wichtigsten Features von C++...! ;)

Ghostwalker 28. Aug 2017 09:30

AW: switch, break, case c++
 
Nein, aus Erfahrung kann ich dir sagen, das das den Code nur Unübersichtlicht macht (insbesondere bei Großen und Komplexen Projekten). Das einzige, das ich kenne, das noch schlimmer ist in der Hinsicht ist PHP. Da musst du noch nicht mal eine Variable deklarieren. Du verwendest sie einfach. Wenn du dann noch im Team mit 5 Leuten arbeitest....:shock:

mensch72 28. Aug 2017 09:34

AW: switch, break, case c++
 
Noch einen gutgemeinten Style Hinweis für solche API Programme:

- so ewig lange und auch noch verschachtelten "Endlos Switch/Case" lässt man nicht auf Dauer so im Code
- Microsoft empfahl früher MessageBreaker(Makros samt TypeCasts für weitere Nachrichtenbehandlung mit/in einzelnen "TypSicheren" Einzelfunktionen)
- ich habe es stets selbst gemacht und bin es mehr logisch funktional angegangen... also "HandleMenuMessages(...)" "HandleControlMessages(...)" "HandleScrollMessages(...)" "HandlePaintMessages(...)"...
- mein Haupt "switch" und mein innerer WMCOMMAND "switch" bestehen im ReleaseProgramm stets nur aus "case" mit "HandleXXX(...)" Aufrufen.
- ich hatte mir angewöhnt nach dem Haupt "switch" in der FensterFunktion wenn LogDebugInfo nicht voll deaktiviert, dort immer GetLastError zu prüfen und wenn was anliegt dies mit TimeStamp und samt den 4 Übergabeparametern der Fensterfunktion zu loggen... das ja mir jahrelang so gereicht um alles einigermaßen sauber(=ohne da noch ständig nicht bearbeitete LastErrors") zu verarbeiten

Klar gibt es auch Exeptions mit denen man um sich werfen kann, aber das Konzept der WinAPI beruht nunmal mehr auf RückgabeCodes und GetLastError.. für weitere Details, und das funktioniert mit etwas mehr Handarbeit durchaus garnicht so schlecht:)

EWeiss 28. Aug 2017 09:38

AW: switch, break, case c++
 
Zitat:

Zitat von Ghostwalker (Beitrag 1379689)
Nein, aus Erfahrung kann ich dir sagen, das das den Code nur Unübersichtlicht macht (insbesondere bei Großen und Komplexen Projekten). Das einzige, das ich kenne, das noch schlimmer ist in der Hinsicht ist PHP. Da musst du noch nicht mal eine Variable deklarieren. Du verwendest sie einfach. Wenn du dann noch im Team mit 5 Leuten arbeitest....:shock:

Ich sehe einen großen Gewinn dabei vor allem dann wenn es um globale Variablen geht.
Die den Speicher mitunter an verschiedenen stellen sehr schnell mal eben so überschreiben.

Bei solchen Konstellationen
Code:
{
  long x = 0;
  x += + 10;
}
Ist X nur solange definiert\gültig wie man sich innerhalb der Schleife befindet.
Der Speicher wird also mit der Variable X nicht überschrieben.

Bei einer globalen Definition ist es sehr schwer bei überschriebenen Speicher den Fehler nachher zu finden.
Aber gut jeder wie er will.

gruss

Motzi 28. Aug 2017 09:54

AW: switch, break, case c++
 
Zitat:

Zitat von Ghostwalker (Beitrag 1379689)
Nein, aus Erfahrung kann ich dir sagen, das das den Code nur Unübersichtlicht macht (insbesondere bei Großen und Komplexen Projekten). Das einzige, das ich kenne, das noch schlimmer ist in der Hinsicht ist PHP. Da musst du noch nicht mal eine Variable deklarieren. Du verwendest sie einfach. Wenn du dann noch im Team mit 5 Leuten arbeitest....:shock:

Also ich arbeite seit ~9 Jahren beruflich hauptsächlich mit C++ und kann aus meiner Erfahrung sagen, dass es nicht unübersichtlicher ist, im Gegenteil. Nicht nur, dass Definition und Verwendung nahe beieinander liegen (bessere Lokalität), es ist eben auch für RAII extrem wichtig. Und RAII ist eines der wichtigsten Konzepte in C++ - wenn man modernes C++ schreibt (speziell seit C++11) werden Resourcen nicht explizit verwaltet, so wie in Delphi mit try-finally, sondern eben über Wrapper-Klassen mit Destruktoren und RAII.

Luckie 28. Aug 2017 11:15

AW: switch, break, case c++
 
Noch ein kleiner Tipp von mir: Ich würde die teilweise sehr langen Codeblöcke in sprechend benannte Funktionen auslagern. Dann wird deine ganze switch/case Konstruktion auch übersichtlicher. Und du siehst am Funktionsnamen, was an der Stelle passiert.

EWeiss 28. Aug 2017 13:27

AW: switch, break, case c++
 
Zitat:

Ich würde die teilweise sehr langen Codeblöcke in sprechend benannte Funktionen auslagern.
Vorteil/Auswirkung gleich 0.

Von daher kann ich mir das sparen.. letztendlich spielt es keine rolle.
Am ende nur eine Schönheitskorrektur.

gruss

Jumpy 28. Aug 2017 15:31

AW: switch, break, case c++
 
[QUOTE=EWeiss;1379739]
Zitat:

Am ende nur eine Schönheitskorrektur.
Wenn Schönheitskorrekturen keine Auswirkungen haben, frage ich mich woher die Schönheitschirurgen die viele Kohle scheffeln. Dem/Der ein oder anderen soll es auch bei Männer-, eh ich meine natürlich User-Fang geholfen haben. Aber am Ende hast du natürlich recht, es zählen nur die inneren Werte ... :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz