Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

11

22.07.2010, 13:49

Soweit ich weiß gibt es schon einen Unterschied:
Bei cond ? a : b müssen a und b von selben Typ sein. Das ist bei if(cond) a else b nicht notwendig. Kann mich aber auch irren.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

22.07.2010, 14:00

a und b müssen dem zugewiesenen Typ entsprechen, das stimmt schon. Aber ?: ist eben auch kein if. ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

22.07.2010, 14:04

ja sie müssen vom gleichen typ sein. es ist ja ein bedingter ausdruck und keine verzweigung. man kann es lediglich durch else if ersetzen.
es ist also eher wie eine funktion die einen wert zurück gibt.

C-/C++-Quelltext

1
2
3
4
5
6
7
template<class T> inline T bedingterAusdruck(bool bedingung, T Wert1, T Wert2)
{
    if(bedingung)
        return Wert1;
    else
        return Wert2;
}
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

14

22.07.2010, 14:10

Ein Operator und eine Funktion sind sowieso fast das Gleiche.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

15

22.07.2010, 15:53

Semantisch sind sie sogar äquivalent. Oder nicht?
Edit:
Nicht Operator und Funktion, sondern Operation und Funktion. Ein Operator ist natürlich nur ein Symbol ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (22.07.2010, 15:58)


16

22.07.2010, 15:56

Doch.
Stichwort Operator Overloading.
Da hat man dann tatsächlich sowohl operator als auch funktion ;-)

Crush

Alter Hase

Beiträge: 383

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

17

22.07.2010, 18:28

Macros sollten heute gar nicht mehr verwendet werden, da keine Typprüfung stattfindet und ein Debuggen bei Fehlern extrem schwer ist. Das ist genauso gefährlich wie der Einsatz von Metatemplates, wobei das immer noch besser ist, da der Compiler beim Übersetzen wenigstens eingeschränkte Typenprüfungen machen kann. Den operator? und : kenne ich übrigens nicht innerhalb von Klassen zum Überladen - die existieren einfach nicht.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

22.07.2010, 19:14

Es ist ja auch kein Operator in diesem Sinne, sondern eine bedingte Wertzuweisung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

19

22.07.2010, 19:33

Was meinst du damit? - Es ist ganz klar ein Operator.

Zitat


5.16 Conditional operator
conditional-expression:
logical-or-expression
logical-or-expression ? expression : assignment-expression


Und eine Wertzuweisung muss nicht statt finden. Das Ergebnis der Operation hat einfach einen Wert, den er annehmen kann (es ergib einen Ausdruck).

Dass man ihn nicht überladen kann ist einfach eine Ausnahme, wie auch bei '.', '.*' und '::'.

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

20

22.07.2010, 19:34

Macros sollten heute gar nicht mehr verwendet werden, da keine Typprüfung stattfindet und ein Debuggen bei Fehlern extrem schwer ist. Das ist genauso gefährlich wie der Einsatz von Metatemplates, wobei das immer noch besser ist, da der Compiler beim Übersetzen wenigstens eingeschränkte Typenprüfungen machen kann.

Man sollte durchaus vorsichtig sein beim Einsatz von Makros. Doch Grundsätzlich würde ich es nicht verteufeln. Sie können einem das Leben manchmal unheimlich erleichtern und für wesentlich übersichtlicheren Code sorgen.

Werbeanzeige