Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 10 Kontrollstrukturen
  gp 10.1 Verzweigungen mit der if-Bedingung
    gp 10.1.1 Anweisungsblock
  gp 10.2 Die Verzweigung mit else if
  gp 10.3 Die Verzweigung mit else
  gp 10.4 Der !-Operator (logischer Operator)
  gp 10.5 Logisches UND (&&) – Logisches ODER (||)
  gp 10.6 Bedingungsoperator ?:
  gp 10.7 Fallunterscheidung: die switch-Verzweigung
    gp 10.7.1 default
  gp 10.8 Die while-Schleife
    gp 10.8.1 Endlosschleife (while)
    gp 10.8.2 Fehlervermeidung bei while-Schleifen
  gp 10.9 Die do while-Schleife
  gp 10.10 Die for-Schleife
    gp 10.10.1 Beispiele für eine for-Schleife
  gp 10.11 Kontrollierte Sprünge
    gp 10.11.1 continue
    gp 10.11.2 break
  gp 10.12 Direkte Sprünge mit goto
  gp 10.13 Notationsstil
    gp 10.13.1 K&R-Stil
    gp 10.13.2 Whitesmith-Stil
    gp 10.13.3 Allman-Stil
    gp 10.13.4 GNU EMACS-Stil
    gp 10.13.5 Der Stil des Autors ;) (K&R-like)


Galileo Computing - Zum Seitenanfang

10.6 Bedingungsoperator ?toptop

Der Bedingungsoperator ?: ist ein ternärer Operator (der einzige in ANSI C). Im Prinzip repräsentiert dieser Operator nichts anderes als eine Kurzform der if else-Anweisung. Hier die Syntax:

<BEDINGUNG> ? <ANWEISUNG 1> : <ANWEISUNG 2>

Wenn die BEDINGUNG wahr ist, wird die ANWEISUNG1 ausgeführt. Ansonsten wird ANWEISUNG2 ausgeführt. Der Programmablaufplan ist identisch mit dem der if else-Anweisung. Sie benötigen beispielsweise von zwei Zahlen den höheren Wert. Mit dem Bedingungsoperator ? : könnten Sie folgendermaßen arbeiten:

max = (a>b) ?a :b;

Diese Schreibweise ist äquivalent zu der folgenden:

if(a > b)
   max=a;
else
   max=b;

Ein Listing:

/* max_val.c */
#include <stdio.h>
int main(void) {
   int a=5,b=10;
   int max;
   max = (a > b) ? a : b;
   printf("Der größte Wert ist %d \n", max);
   return 0;
}

Natürlich ist es auch hier möglich, die einzelnen Ausdrücke ineinander zu verschachteln:

/* more_max_val.c */
#include <stdio.h>
int main(void) {
   int a=8, b=3, c=76, big;
   printf("Die größte Zahl ist....");
   big = (a>b) ? ((a>c) ?a :c) : ((b>c) ?b :c);
   printf("..%d\n", big);
   return 0;
}

Auch hier kann bei mehrfacher Verschachtelung die Übersichtlichkeit und Nachvollziehbarkeit des Programms leiden. Hier wären if else-Anweisungen besser geeignet. Sehen Sie sich folgende Codezeile näher an:

big = (a>b) ? ((a>c) ?a :c) : ((b>c) ?b :c);

Bevor die Variable big einen Wert zugewiesen bekommt, werden zuerst folgende Bedingungen überprüft: Ist der Wert von a größer als der von b, wird überprüft, ob der Wert von a auch größer als der von c ist. Ist das der Fall, so ist a der größte Wert. Ist dies nicht der Fall, ist c der größte Wert. Sollte aber in der ersten Bedingung a nicht größer als b sein, so wird überprüft, ob b größer als c ist. Ist b größer als c, haben Sie den größten Wert gefunden. Ist b nicht größer als c, bleibt nur noch c als größte Zahl übrig.

Häufig wird der Bedingungsoperator auch wie folgt verwendet:

printf("Bitte geben Sie eine Zahl ein: ");
scanf("%d",&zahl);
printf("Die Zahl, die Sie eingegeben haben, ist ");
(zahl%2) ? printf("ungerade \n") : printf("gerade \n");
 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de