[gelöst] printf mit if.... Da war doch mal was...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

[gelöst] printf mit if.... Da war doch mal was...

Beitrag von heinz » 04.11.2009 18:06:54

Hallo Zusammen,

ich steh grad etwas auf dem Schlauch... :(

Ich glaube mich erinnern zu können das es unter c eine möglichkeit gibt
innerhalb des printf befehls eine art if zu integrieren.
Leider kenn ich die Syntax nicht mehr und auch nicht nach welchem Stichwort
man im Netz danach suchen könnte.

Kann mir jemand von Euch kurz auf die Sprünge helfen?
(Falls überhaupt jemand anhand meiner Beschreibung erkennen konnte was ich meine :wink: )

Danke schon mal,
gruß heinz

[EDIT]
Ich habs scheinbar gefunden...
Bedingte ersetzung war das Stichwort.
(Was eine kleine Pause doch so alles bewirken kann... :wink: )

Code: Alles auswählen

int A=1 ;
printf("%s\n",A==0?"null":"eins");
gruß heinz

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Duff » 04.11.2009 19:44:41

Man nennt diesen Bedinungsoperator ?: auch tenären Operator, der eigentlich nichts anders als eine Kurzform der if-else Anweisung ist.

Code: Alles auswählen

<BEDINGUNG> ? <ANWEISUNG 1> : <ANWEISUNG 2>
Oh, yeah!

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von heinz » 04.11.2009 20:04:46

Hallo Duff,
Man nennt diesen Bedinungsoperator ?: auch tenären Operator
danke für den Hinweis.
tenär... da währe ich nie draufgekommen... wer denkt sich blos solche Namen aus? :mrgreen:

gruß heinz

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Duff » 04.11.2009 20:10:30

Kommt wohl aus der Mathematik.

Die Unterscheidung der Operatoren geschieht durch die Zahl ihrer Operanden.

unär => der Operator hat einen Operanden
binär => der Operator hat zwei Operanden
tenär => der Operator hat drei Operanden
Oh, yeah!

michaels
Beiträge: 1164
Registriert: 29.03.2009 18:12:25

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von michaels » 04.11.2009 20:11:52

Meines Wissens heißt das Ding ternär. Ist auch ein Zahlensystem zur Basis 3, daher wahrscheinlich auch der Name, da das Konstrukt ja auch aus 3 Operanden besteht...

Gruß

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Meillo » 04.11.2009 23:38:43

Duff hat geschrieben:Man nennt diesen Bedinungsoperator ?: auch tenären Operator, der eigentlich nichts anders als eine Kurzform der if-else Anweisung ist.
Falsch.

Code: Alles auswählen

<BEDINGUNG> ? <ANWEISUNG 1> : <ANWEISUNG 2>
Nochmal falsch.

;-)

Es ist *keine* Kurzform des if-else, eben weil das Schema *nicht* korrekt ist.

Beim if sind das Anweisungen (Statements). Bei ?: sind das aber Ausdrücke (Expressions).

Das heißt: Ein if kann einen Block, ein weiteres if, eine Schleife, eine Zuweisung enthalten, das geht bei ?: nicht. Das ?: wird nur durch den Wert des einen oder anderen Ausdrucks ersetzt. Dabei ändert sich keine Ausführungsreihenfolge oder so.

Die folgenden Zeilen zeigen den Unterschied auf:

Code: Alles auswählen

if (cond) { n=1; } else { n=2; }  // correct
n = if (cond) { 1 } else { 2 };  // not possible

i = (cond) ? 3 : 4;  // correct
(cond) ? i=3 : i=4 ;  // not possible
Use ed once in a while!

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von GoKi » 05.11.2009 00:27:36

Meillo hat geschrieben:

Code: Alles auswählen

(cond) ? i=3 : i=4 ;  // not possible
Zwar nicht sonderlich sinnvoll in diesem Zusammenhang...

Code: Alles auswählen

(cond) ? (i=3) : (i=4);
MfG GoKi
:wq

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Duff » 05.11.2009 07:47:16

@Meillo: Ok, danke für die Aufklärung. Dann muss ich nochmals in meinen Büchern nachschauen (C/C++ von A bis Z). Dort wurde es meine ich anders beschrieben.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Meillo » 05.11.2009 07:49:03

GoKi hat geschrieben:
Meillo hat geschrieben:

Code: Alles auswählen

(cond) ? i=3 : i=4 ;  // not possible
Zwar nicht sonderlich sinnvoll in diesem Zusammenhang...

Code: Alles auswählen

(cond) ? (i=3) : (i=4);
Danke für den Hinweis.
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Meillo » 05.11.2009 07:50:37

Duff hat geschrieben:@Meillo: Ok, danke für die Aufklärung. Dann muss ich nochmals in meinen Büchern nachschauen (C/C++ von A bis Z). Dort wurde es meine ich anders beschrieben.
Das liegt halt daran, dass du die falschen Bücher liest. ;-)
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Duff » 05.11.2009 08:14:29

Meillo hat geschrieben: Das liegt halt daran, dass du die falschen Bücher liest. ;-)
Finde die Bücher vom Galileo-Verlag eigentlich ganz gut.
Zu was würdest du denn raten...

[1] http://www.galileocomputing.de/katalog/ ... 4.rIngdD0w
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Meillo » 05.11.2009 11:04:35

Duff hat geschrieben:
Meillo hat geschrieben: Das liegt halt daran, dass du die falschen Bücher liest. ;-)
Finde die Bücher vom Galileo-Verlag eigentlich ganz gut.
Zu was würdest du denn raten...
Ist doch nicht schwer zu erraten: Das Buch vom Autor von C, natürlich.

Darin ist auch die Grammatik der Sprache abgedruckt. Natürlich muss man verstehen wie man das lesen muss, doch dann weiß man wirklich wie es funktioniert.

Ab und an ein Blick direkt in den Standard[0] schadet auch nicht. ;-)

[0] http://www.ishiboo.com/~nirva/c++/C_STA ... 9-1999.pdf
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Duff » 05.11.2009 11:55:24

Danke für den Link.

Zum Nachschlagen ist dies gut.
Aber zum Lesen hätte ich doch lieber ein Buch in der Hand und am liebsten auch in Deutsch.
Oh, yeah!

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: [gelöst] printf mit if.... Da war doch mal was...

Beitrag von Meillo » 05.11.2009 15:09:41

Duff hat geschrieben:Aber zum Lesen hätte ich doch lieber ein Buch in der Hand und am liebsten auch in Deutsch.
Meillo hat geschrieben:Das Buch vom Autor von C, natürlich.
Kernighan und Ritchie: ``The C Programming Language''

Nimm's lieber in Englisch, die deutsche Version ist grässlich. Da sind alle Begriffe eingedeutscht. :|

btw: Das ist natürlich nur C; für den Fall, dass du auch an C++ denkst. Den Stroustrup kenne ich leider nicht.
Use ed once in a while!

Antworten