Was mach diese Funktion

Gast #2311487
Lesenswert?

Halloe.

Das ganz ist eine verkürzte Schreibweise für eine IF THEN ELSE 
Bedingung.

Vor dem Fragezeichen steht die Bedingung. Zwischen Fragezeichen und 
Doppelpunkt steht der Wert der J zugewiesen werden soll, wenn diese 
Bedingung "WAHR" ist. Nach dem Doppelpunkt steht der Wert, der J 
zugewiesen werden soll wenn die Bedingung "UNWAHR" ist.

Der Vorteil ist, das die Variable J damit nicht mehr unbedingt eine Zahl 
sein muss. Man könnte damit genau so gut auch Strings zuweisen, was in 
"j=(i<leng-1)" nicht gehen würde.

Freundliche Grüße
Frank
#2311991
Lesenswert?

Stefan Ernst schrieb:
> a no nym schrieb:
>> Ach verflixt, wieder war dieser Karl-Heinz besser. :-)
>
> Aber leider falsch. ;-)

Magst du das näher ausführen
(Ich hab extra 20 Sekunden überlegt, ob es jetzt -1 heißen muss oder 
nicht. Gut, den Fall an den Wertüberläufen hab ich jetzzt nicht näher 
untersucht aber ansonsten müsste das stimmen)

Edit: Oh, und ich bin von Ganzzahldatentypen ausgegangen. Ich denke bei 
Variablennamen i, j und len ist das akzeptabel.
#2312002
Lesenswert?

Karl Heinz Buchegger schrieb:
> Stefan Ernst schrieb:
>> a no nym schrieb:
>>> Ach verflixt, wieder war dieser Karl-Heinz besser. :-)
>>
>> Aber leider falsch. ;-)
>
> Magst du das näher ausführen
> (Ich hab extra 20 Sekunden überlegt, ob es jetzt -1 heißen muss oder
> nicht. Gut, den Fall an den Wertüberläufen hab ich jetzzt nicht näher
> untersucht aber ansonsten müsste das stimmen)

Setzen wir doch einfach mal für leng und i das gleiche ein, z.B. 10:
!(10<9) vs 10>10
#2312015
Lesenswert?

Stefan Ernst schrieb:
> Karl Heinz Buchegger schrieb:
>> Stefan Ernst schrieb:
>>> a no nym schrieb:
>>>> Ach verflixt, wieder war dieser Karl-Heinz besser. :-)
>>>
>>> Aber leider falsch. ;-)
>>
>> Magst du das näher ausführen
>> (Ich hab extra 20 Sekunden überlegt, ob es jetzt -1 heißen muss oder
>> nicht. Gut, den Fall an den Wertüberläufen hab ich jetzzt nicht näher
>> untersucht aber ansonsten müsste das stimmen)
>
> Setzen wir doch einfach mal für leng und i das gleiche ein, z.B. 10:
> !(10<9) vs 10>10

Verdammt.
Ich such mir schon ein Eckchen zum schämen :-)

(und ich war mir so sicher, dass das -1 gegen das >= "gekürzt" werden 
kann, grummel grummel)
#2312038
Lesenswert?

Karl Heinz Buchegger schrieb:
> (und ich war mir so sicher, dass das -1 gegen das >= "gekürzt" werden
> kann, grummel grummel)

Wäre gegangen, wenn es +1 gewesen wäre.

Hier würde durch das "Kürzen vom =" ein -2 entstehen:
!(i<leng-1)  ->  i>=leng-1  ->  i>leng-2

Aber 100%ig gleichwertig wäre es mit "Kürzen" nie. Es gäbe immer einen 
Wert für leng, bei dem das Verhalten unterschiedlich wäre (wegen 
Über-/Unterlauf).
#2312767
Lesenswert?

Bernd Bömer schrieb:
> Hallo,
> alles klar !!
> Diese verkürzten Schreibweisen sind ja das a und o bei C.

Eigentlich sind sie es nicht. Was am Ende zählt ist, was der Compiler 
daraus macht. Deswegen schreiben intelligente Programmierer den Code so, 
dass man ihn hinterher noch verstehen kann. Und nicht etwa sowas:

1
#define CHECKTHISOUT(x) (x==0?0:((x==1)?3:((x==2)?5:13)))

Ein reales Beispiel aus unserem Sourcecode aus der Arbeit. Kollegen, die 
sowas schreiben, gehört eigentlich von Rechts wegen eins in die Fresse. 
;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren